Redis5种数据结构的内部编码及应用场景和基本命令

  1. 字符串(String)
    常用命令
存登陆者的姓名:set loginUser Lucy       取登陆者的姓名:get loginUser
计数自增自减:incr num1  / desc num1 (每执行一次num1的值自动加1或减1,当然值必须是数值或可以转为数值的值)
查所有存String类型的key:key *      删除键:del key名
确定key是否存在:exists key名

String的内部编码有3种
int:8个字节的长整型
embstr:<=39个字节的字符串
raw:>39个字节的字符串
String的应用场景
缓存功能:存取一个对象,注:键的取名以“业务名:对象名:id:[属性]”,如mysql:employee:1:name;
计数功能:如视频点赞、收藏数的自增
共享Session:如在分布式开发中用于储存用户信息供多个服务器访问
限速:如禁止用户多次发送验证信息

  1. 哈希(hash)
    常用命令
赋值:hset key field value    取值: hget key field   取所有field的值: hgetall key
查key下的所有field:hkeys key             查key下的所有field的值:hvals key
查key下的所有field及field的值:hgetall key     删除key下的某个field:hdel field

内部编码有2种
ziplist:当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个)且同时所有的值都小于hash-max-ziplist-value配置(默认64字节)时,采用ziplist作为哈希的内部实现,ziplist在节省内存方面比hashtable优秀。
hashtable:不满足ziplist则采用hashtable,此时因数据大用hashtable读写效率提高。
应用场景
使用哈希类型存储对象数据

  1. 列表(list)
    常用命令
赋值:从队列左边录入值abc:lpush list  abc , 从右边录入值 123:rpush list 123
队列数据为:cba123
删除同样分lpop和rpop
查全部数据:lrange list 0 -1

内部编码有2种
ziplist:当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个)且同时所有的值都小于hash-max-ziplist-value配置(默认64字节)时,采用ziplist作为哈希的内部实现,ziplist在节省内存方面比hashtable优秀。
linkedlist:不满足ziplist就采用linkedlist。
应用场景
lpush+lpop=Stack(栈)
lpush+rpop=Queue(队列)
lpush+ltrim=Capped Collection(有限集合)
lpush+brpop=Message Queue(消息队列)

  1. 集合(Set):
    常用命令
增:sadd      删:srem    查:smembers 

内部编码有2种
inset:当集合中的元素都是整数且元素个数小于set-max-inset-entries配置(默认512个),更节省内存。
hashtable:不满足inset则采用hashtable.
应用场景:
sadd=Tagging(标签):使用sadd,sinter,sdiff,sunion可以求共同爱好,产品推荐,社交需求
spop/arandmember=Random item(生成随机数:用于抽奖)

  1. 有序集合(zset):
    常用命令
增:zset      删:zrem  查所有:zrange 0 -1

注:所谓有序集合是由key值为score,根据score的权重(即key值的大小)作为排序的依据。
内部编码有2种
ziplist:当哈希类型元素个数小于zset-max-ziplist-entries配置(默认128个)且同时所有的值都小于zset-max-ziplist-value配置(默认64字节)时,采用ziplist作为哈希的内部实现,ziplist在节省内存方面比hashtable优秀。
skiplist:不满足ziplist则采用skiplist。
应用场景
排行榜系统

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值