-
String类型(适用于大部分)
- 含义
- String类型包含多种类型的特殊类型,并且是二进制安全的.比如序列化的对象进行存储,比如一张图片进行二进制存储.,比如一个简单的
- 命令
- setrange key index value -> 修改键对应的值,index表示开始的索引位置
- ttl ->可以查询出当前的key还剩余多长时间过期
- setex key timeout value -> 存入键值对,timeout表示失效时间,单位s
- setnx key value -> 存入键值对,键存在时不存入
- append key 'value' -> 原值后拼接新内容
- mget k1 k2 ... -> 批量取出键值
- mset k1 v1 k2 v2 ... -> 批量存入键值对
- incrby key num -> 偏移值
- 应用场景
- 计数器:如:视频播放数系统就是使用redis作为视频播放数计数的基础组件
- 共享session:如:用户刷新一次访问可能会需要重新登录,为避免这个问题可以用redis将用户session集中管理
- 含义
-
hash类型(一般适用于对象类型)
- hash ---> 转换成json格式
-
{
key1:value1
key2:value2 ------> "{key1:value1, key2:value2}"
}
JSON.toJsonString(map)
- 含义
- 是String类型的field和value的映射表.或者说是一个String集合.它特别适合存储对象,相比较而言,讲一个对象存储在Hash类型里要比存储在String类型里占用更少的内存空间,并方便存储整个对象
- 命令
- hset key hashkey hashvalue -> 存入一个hash对象
- hget key hashkey -> 根据hash对象键取去值
- hexists key hashkey -> 判断hash对象是含有某个键
- hdel key hashkey -> 根据hashkey删除hash对象键值对
- hincrby key hashkey 递增值 -> 递增hashkey对应的值
- hlen key -> 获取hash对象键的数量
- hkeys key -> 获取hash对象的所有键
- hvals key -> 获取hash对象的所有值
- hgetall key -> 获取hash对象的所有数据
- hsetnx key value -> 存入键值对,键存在时不存入
- 应用场景
-
哈希结构相对于字符串序列化缓存信息更加直观,并且在更新操作上更加便捷。
所以常常用于**用户信息**等管理
-
-
list类型(数据是多个且允许重复)
- 含义
-
类似Java中的queue,也可以当做List来用.
List类型是一个链表结构的集合,其主要功能有push,pop,获取元素等.更详细的说,List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,list的设计非常简单精巧,即可以作为栈,又可以作为队列.满足绝大多数需求
-
- 命令
- rpush key value -> 往列表右边添加数据
- lrange key start end -> 范围显示列表数据,全显示则设置0 -1
- lpush key value -> 往列表左边添加数据
- lpop key -> 弹出列表最左边的数据
- rpop key -> 弹出列表最右边的数据
- llen key -> 获取列表长度
- linsert key before/after refVal newVal -> 参考值之前/后插入数据
- lset key index value -> 根据索引修改数据
- lrem key count value -> 在列表中按照个数删除数据
- ltrim key start end -> 范围截取列表
- lindex key index -> 根据索引取列表中数据
- 应用场景
- 如:用户收藏文章列表:xxxx_user_articles:uid [aid1, aid2, aid3.....]
- 含义
-
set类型(数据是多个且不允许重复)
- 含义
- Set集合是string类型的无序集合,set是通过hashtable实现的,对集合我们可以取交集,并集,差集.
- 命令
- sadd key value -> 往set集合中添加元素
- smembers key -> 列出set集合中的元素
- srem key value -> 删除set集合中的元素
- spop key count -> 随机弹出集合中的元素
- sdiff key1 key2 -> 返回key1中特有元素(差集)
- sdiffstore var key1 key2 -> 返回key1中特有元素存入另一个set集合
- sinter key1 key2 -> 返回两个set集合的交集
- sinterstore var key1 key2 -> 返回两个set集合的交集存入另一个set集合
- sunion key1 key2 -> 返回两个set集合的并集
- sunionstore var key1 key2 -> 返回两个set集合的并集存入另一个set集合
- smove key1 key2 value -> 把key1中的某元素移入key2中
- scard key -> 返回set集合中元素个数
- sismember key value -> 判断集合是否包含某个值
- srandmember key count -> 随机获取set集合中元素
- 应用场景
- 去重
- 抽奖
- 含义
- zset(sorted set 要排序选用)
- 含义
- 类似于集合,但是每个元素都有一个分数(score)与之关联
- 命令
- zadd key score column -> 存入分数和名称
- zincrby key score column -> 偏移名称对应的分数
- zrange key start end -> 按照分数升序输出名称
- zrevrange key start end -> 按照分数降序输出名称
- zrazrank key name -> 升序返回排名
- zrevrank key name -> 降序返回排名
- zcard key -> 返回元素个数
- zrangebyscore key min max [withscores] -> 按照分数范围升序输出名称
- zrevrangebyscore key max min [withscores] -> 按照分数范围降序输出名称
- zrem key name -> 删除名称和分数
- zremrangebyscore key min max [withscores] -> 根据分数范围删除元素
- zremrangebyrank key start end -> 根据排名删除元素
- zcount key min max -> 按照分数范围统计个数
- 应用场景
-
排行榜:有序集合经典使用场景。例如视频网站需要对用户上传的视频做排行榜,榜单维护可能是多方面:按照时间、按照播放量、按照获得的赞数等
-
- 含义