五种常用类型:
String,List,Set,SortedSet,Hash
1 String(它在Redis中是二进制安全的,这便意味着该类型存入和获取的数据相同。)
-常用操作
- 赋值 :set name "小明"
- 查看: get name
- 修改: set name "小红"
- 删除: del name
- 原子增加1: incr num
- 原子增加n: incrby num n
- 原子减少1:decr num
- 原子减少n:decrby num n
- append key value:拼凑字符串。如果该key存在,则在原有的value后追加该值;如果该key不存在,则重新创建一个key/value
2 Hash(可看成map容器,适合存储对象信息)
-常用操作
- 单赋值:hset zyh age 18;
- 单查看:hget zyh age;
- 多赋值:hmset zyh age 18 height 199;
- 多查看:hmget zyh age height
- 全查看:hgetall zyh
- 修改:同赋值
- 删除字段:hdel zyh 字段1/字段2名 (即可以删除一个字段和其值也可以删除多个)
- 删除整个set:del zyh
- 增加数字:hincrby zyh age 3
- 判断指定字段是否存在:hexists zyh age
- 查出set字段个数:hlen zyh
- 获取所有字段名: hkeys zyh
- 获取所有key值:hvalus zyh
3 List(列表:从左到右双向链表,按照String元素插入顺序排序)
-常用操作
- 左添加: lpush mylist aaa[bbb ccc]
- 右添加: rpush mylist aaa[bbb ccc]
- 查看第start到end的元素: lrange mylist start 1 end 1
- 修改:
- 头部删除:lpop mylist 弹出并返回第一个元素(头元素),若不存在则返回nil
- 尾部删除:rpop mylist 弹出并返回尾部第一个元素
4 Set(和List类型不同的是,Set集合通过哈希表实现不允许出现重复的元素,)
-常用操作
- 添加:sadd zyh 111 222
- 查看Set中所有成员:smembers zyh
- 修改:
- 删除指定成员(支持多删除):srem zyh 111[111 222]
- 判断指定元素是否存在:sismember zyh 111
- 返回集合中元素数量: scard zyh
- set集合差集:sdiff A B sdiffstore destination A B 将A、B相差的成员存储在destination上
- set集合交集:sinter A B sinterstore destination A B 将A、B相交的成员存在destination上
- set集合并集:sunion A B sunionstore destination A B 将A、B相交的成员存储在destination上
5 ZSET (Sorted Set(通过分数来为集合中的成员进行从小到大的排序))
Sorted-Set和Set类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Set中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管Sorted-Set中的成员必须是唯一的,但是分数(score)却是可以重复的。 在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数。由于Sorted-Set中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。事实上,Redis所具有的这一特征在很多其它类型的数据库中是很难实现的,换句话说,在该点上要想达到和Redis同样的高效,在其它数据库中进行建模是非常困难的。 例如:游戏排名、微博热点话题等使用场景。
-常用操作
- 支持多添加: zadd gread 1 zyh 2 yl
- 范围查询(start end 为同一个即score成员本身):zrange gread start end 添加元素时候要注意的是如果分数相同,那么后添加的在前面
- 修改:先删除再添加
- 删除指定成员:zrem gread zyh
- 分数在0~100的成员按照分数排名查看:zrangebyscore gread 0 100
底层结构:跳跃表
6 用于计数的HyperLogLog,用于支持存储地理位置信息的Geo
暂不了解