redis基础

redis操作手册

String

String引用场景:
1、缓存
2、分布式session
3、set NX EX (分布式锁)
4、incr (自增) 全局id实现
5、incr 计数器
6、incr 限流
7、位操作

Hash

1、会把所有的key聚合在同一个key下。
2、不会造成key冲突
3、hget 可以一次性取出所有数据

hash:
1、 expire过期时间 是针对key的 如果数据单独设置过期 不合适
2、不支持bit操作
3、redis集群是根据key进行数据分布,会导致数据不均横

hash底层使用的存储结构

  1. ziplist (压缩列表) 存储的不是上一个和下一个的地址 而是长度 节省空间
    当filed的个数少于512 并且所有的数据长度小于64个字节


    image.png
  2. hashtable

hash引用场景
在购物车里
key:用户id field:商品id value:商品数量
+1:hincr -1:hdecr 删除:hdel 全选:hgetall 商品数:hlen

list列表

有序,左边是列表头,从左到右

基本操作如下:
r 代表右边 l代表左边


image.png

list存储结构:
quicklist:双向循环列表+zipList

list应用场景:
lpush rpush lpop rpop 可以用这些来组合成堆或者栈
譬如用lpush rpop 实现消息队列

set集合

无序集合(最大2^32-1)


image.png

set存储结构:

  1. intest (全是int类型的数据,或者元素个数少于512个)
  2. hashtable (用Key存储值,value为空值)

set应用场景:

  1. 用spop 随机弹出一个元素 用于抽奖
  2. 点赞、签到、打卡

zset 有序集合

ZADD key score member [[score member] [score member] …]
score是分值 zset会根据score排序

zset存储结构:
zipList :当节点少于128或者元素的值小于64 byte
skipList(跳表): 有序链表 按数值排序 上一个节点存储下一个节点的指针,此时随机取节点组成上层链表,每次取值先判断上层链表的数值,如果处于中间则降层。


image.png

zset应用场景:

  1. 排行榜
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容