一、Redis的數據結構
存儲的時候key和value都是String,value支持String、hash、list、set、zset等數據結構。
1. String
結構:key-value
常用方法:set、setex、setnx(setIfNotExist)、get、incr/decr
使用場景:存task、分佈式鎖、存int值做自增計數(incr具有原子性)
2. Hash 哈希表
結構:key:[field-value; field-value;] 映射關係
常用方法:hset(key, field, value); hget/hexists/hdel(key, field); hgetAll(key)
使用場景:存客服的會話list(field會話key,value會話詳情)、對工單的星標類型(field工單id,value星標類型)
3. List 列表
結構:key:[value; value;] 有序可重複,底層是鏈表實現的。頭尾添加元素快,查找慢。
常用方法:lpush/rpush增、lpop/rpop刪、lset(設置索引位置的值)、查lrange(key,start,end):可爲負數-1表示鏈表尾部-2表示倒數第二個。 L是左邊隊頭,R是右邊隊尾。
使用場景:做簡單的消息隊列功能,可以確保先後順序;利用lrange做分頁功能;
4. Set 集合
結構:key:[value1; value2;] 無序,不可重複。
常用方法:sadd增、srem刪、sismember/smembers查;
使用場景:需要做數據去重時。
5. sortedSet (zset) 有序集合
結構:key:[value-score; value-score]
常用方法:zadd增、zrem刪、zrange查
使用場景:做排序、取topK、範圍查找等。