数据结构
5大核心数据结构
其他比如RedisGeo就是对基本数据类型zset的包装扩展
所以我们先了解5中基本类型才能对Redis有较深入的分析
常见应用场景
string
- 单值缓存
SET key value
GET key - 对象缓存
MSET key1 value1 key2 value2
MGET key1 key2 - 不存在则设置
SETNX key value //成功返回1,失败返回0 - 删除
DEL key - 设置超时时间
- 原子计数器
INCR key [count] //value 内容+1或者+count
Hash
可以理解为一个嵌套的map结构
Map<Map<String, String>>
下边是Hash结构的示意图:
- 存储
HSET key field value - 只有不存在才存储
HSETNX key field value - 获取 RedisKey中对应fieldKey的值
HGET key field - 批量存储多个field key关系
HMSET key field value [field value … ] - 批量获取RedisKey中对应fieldKey的值
HMGET key field [field … ] - 删除RedisKey中fieldKey对应的键值
HDEL key field [field … ] - 返回RedisKey中field的数量
HLEN key - 返回RedisKey中所有的键值
HGETALL key - 对RedisKey中对应的fieldKey做增量increment
HINCRBY key field increment
List
- 从左边插入作为head
LPUSH key value [value … ] - 从右边插入作为tail
RPUSH key value [value … ] - 查询并移除head元素
LPOP key - 查询并移除tail元素
RPOP key - 查询索引区间内所有元素
LRANGE key start stop - 查询并移除head元素,如果没有则阻塞等待timeout秒
BLPOP key timeout - 查询并移除tail元素,如果没有则阻塞等待timeout秒
BRPOP key timeout
Set
主要是对集合进行操作
基本操作
- 不存在则新增
SADD key value [value … ] - 删除
SREM key value [value …] - 获取所有
SMEMBERS key - 获取元素个数
SCARD key - 判断是否存在
SISMEMBER key value - 读取集合中count个元素
SRANDMEMBER key [count] - 出队集合中count个元素
SPOP key [count]
运算操作
- 集合取交集
SINTER key [key …] - 集合取并集
SUNION key [key …] - 集合取差集,假设有集合A,B,C:差集=A-(B和C的并集)
SDIFF key [key …] - 计算后并存入新集destination中
*STORE destination key [key …]
ZSET (sorted-Set)
按分数排序的有序集合
基本操作
- 插入
ZADD key score member [[score member]…] - 删除
ZREM key member [member …] - 返回元素的分值
ZSCORE key member - 给value分值+increment
ZINCRBY key increment member - 返回元素的个数
ZCARD key - 正序获取范围元素
ZRANGE key start stop [WITHSCORES] - 倒叙获取范围元素
ZREVRANGE key start stop [WITHSCORES]
计算操作
- 并集并存储
ZUNIONSTORE destkey numkevs key [key …] - 交集并存储
ZINTERSTORE destkey numkevs key [key …]