首页
>
Redis > redis数据类型及应用场景介绍
redis数据类型及应用场景介绍
- string
- 这是Redis最基本的数据类型。string是二进制安全的,意味着可以存储各种类型的数据,比如一张JEPG图片或者一个序列化过的Ruby对象。
- 最普通的KV缓存操作:set str_key str_value, get str_key
- 原子计数器:incr str_key, decr str_key, incrby str_key 1
- 获取子串:getrange str_key 0 3
- list
- 双端有序队列,可方便地在头部和尾部插入或删除数据
- 消息队列:rpush list_key member, lpop/blpop list_key. 可用于线程、进程间通信。
- 可信消息队列:list用作消息队列,消息获取者取数据过程中若发生异常(崩溃、网络断开等),会导致数据已pop出队列而获取者并未得到数据。因此有必要将取出的消息先放在一个“正在处理”队列中,获取中处理完成后再从“正在处理”队列中将消息删除。rpoplpush msgQueue msgProcessingQueue一个命令即可完成出队和入队操作,消息处理完毕使用lrem msgProcessingQueue 0 msg将消息彻底删除。
- 时间轴(Timeline):通过lpush不断地将事件插入队列,通过lrange取出最近发生的几个事件。
- 循环(Circular)队列:将N个数据lpush入队列CircularList,然后通过rpoplpush CircularList CircularList即可循环访问此队列中的数据。
- 定长最新队列:将数据lpush进队列,并通过ltrim 0 MaxLen-1保留指定索引范围内的元素,可以使得队列长度不超过设定的值MaxLen,此时队列中始终保存这最新的MaxLen个数据。
- set
- 无序不重复的string集合,向其中添加、删除、查找元素的时间效率均为常量级O(1)。
- 数据去重:sadd set_key member
- 集合交并补运算:sinter skey1 …, sunion skey1 …, sdiff skey1 …
- zset
- 带有分值(score)的set,有了分值就可以对set进行排序。zset同样是key不重复,但是和key关联的score却可以相同。
- 计数:zadd sset_key score member, zincrby sset_key increment member, zscore sset_key member
- Top N:zrange/zrevrange sset_key 0 N-1 [withscores]
- 范围查询:zrangebyscore sset_key min_score max_score [withscores] [limit offset count]
- 排名查询:zrank sset_key member
- hash
- string键值对映射,其实称作键-域-值三元组更合适,因为每个hash key中可以存储多个不同的域,每个域里存储对应的数据。这就适合用来存储对象,对象包含多个属性,各属性都有自己的值。
- 映射合集:hset hkey field1 value1, hget hkey filed1, hmset hkey2 field1 value2 field2 valuex
- 计数:hincrby hkey filed increment
您可能需要这些【参考资料】:
零一积流|IT参考 原创文章,转载请注明出处:
http://www.it-refer.com/2016/01/25/redis-data-structure-and-usage-string-list-set-hash