您的位置:首页 > 理论基础 > 数据结构算法

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

2018-10-05 00:31 543 查看

1.字符串(String)
内部编码有3种:
int:8个字节的长整型
embstr:<=39个字节的字符串
raw:>39个字节的字符串
应用场景:
缓存功能:存取一个对象,注:键的取名以“业务名:对象名:id:[属性]”,如mysql:employee:1:name;
计数功能:如视频点赞、收藏数的自增
共享Session:如在分布式开发中用于储存用户信息供多个服务器访问
限速:如禁止用户多次发送验证信息
2.哈希(hash)
内部编码有2种:
ziplist:当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个)且同时所有的值都小于hash-max-ziplist-value配置(默认64字节)时,采用ziplist作为哈希的内部实现,ziplist在节省内存方面比hashtable优秀。
hashtable:不满足ziplist则采用hashtable,此时因数据大用hashtable读写效率提高。
应用场景:
使用哈希类型存储对象数据
3.列表(list)
内部编码有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(消息队列)
4.集合(Set):
内部编码有2种:
inset:当集合中的元素都是整数且元素个数小于set-max-inset-entries配置(默认512个),更节省内存。
hashtable:不满足inset则采用hashtable.
应用场景:
sadd=Tagging(标签):使用sadd,sinter,sdiff,sunion可以求共同爱好,产品推荐,社交需求
spop/arandmember=Random item(生成随机数:用于抽奖)
5.有序集合(zset):
注:所谓有序集合是由key值为score,根据score的权重(即key值的大小)作为排序的依据。
内部编码有2种:
ziplist:当哈希类型元素个数小于zset-max-ziplist-entries配置(默认128个)且同时所有的值都小于zset-max-ziplist-value配置(默认64字节)时,采用ziplist作为哈希的内部实现,ziplist在节省内存方面比hashtable优秀。
skiplist:不满足ziplist则采用skiplist。
应用场景:
排行榜系统

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: