Redis深入之对象
来源:互联网 发布:山西九鼎软件记账 编辑:程序博客网 时间:2024/05/21 10:26
Redis对象系统
前面介绍了Redis用到的所有主要数据结构,如简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合等
Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,每种对象都用到了至少一种我们前面所介绍的数据结构。
Redis对象系统还实现了内存回收机制、对象共享机制。Redis的对象带有访问时间记录信息,该信息可以用于计算数据库键的空转时长,空转时长较大的那些键可能会优先被服务器删除。
SET命令创建一个新的键值对,SET msg “hello world”
包含两个对象,键对象和值对象,每个对象都由一个redis对象结构表示,有3个属性和保存数据有关,type类型,encoding:编码和ptr:指向底层实现数据结构的指针。
键总是一个字符串对象,值可以是字符串对象、列表对象、哈希对象、集合对象或有序集合对象中的一种。
Redis > SET msg“hello world” 字符串对象
Redis >RPUSHnumbers 1 3 5 列表对象
Redis> HMSETprofile name Tom age 25 career Programmer 哈希
Redis>SADDfruits apple banana cherry 集合
Redis>ZADDprice 8.5 apple 5.0 banana 6.0 cherry 有序集合
使用OBJECT ENCODING命令可以查看一个数据库键的值对象的编码
String——INT整形、RAW简单动态字符串
LIST——ZIPLIST压缩列表、LINKEDLIST双端链表
HASH——ZIPLIST压缩列表、HT字典
SET——INTSET整数集合、HT字典
ZSET——ZIPLIST压缩列表、SKIPLIST跳跃表和字典
通过encoding属性来设定对象所使用的编码,而不是为特定类型的对象关联一种固定的编码,极大地提升了Redis的灵活性和效率,因为Redis可以根据不同的使用场景来为一个对象设置不同的编码,从而优化对象在某一场景下的效率。
比如:在列表对象包含的元素比较少时,Redis使用压缩列表作为列表对象的底层实现:
因为压缩列表比双端链表更节约内存,并且在元素数量较少时,在内存中以连续块方式保存的压缩列表比起双端链表可以更快地载入到缓存中。
随着列表对象包含的元素越来越多,使用压缩列表来保存元素的优势逐渐消失,对象就会将底层实现从压缩列表转向功能更强、也更适合保存大量元素的双端链表上面。
- Redis深入之对象
- Redis深入之数据结构
- redis数据结构之对象
- redis之八对象
- Redis之对象
- 深入redis内部之redis启动过程之二
- C#之面向对象深入
- 面向对象之深入思考
- JavaScript深入理解之对象
- js深入之创建对象
- JavaScript深入之变量对象
- Redis 深入分析 之 服务器篇
- Redis深入之简单动态字符串
- Redis深入之路(一)
- Redis深入之路(二)
- Redis深入之路(三)
- Redis深入之路(四)
- Redis深入之路(五)
- redhat 5下设置tomcat自动启动
- 在vim中使用sdcv查询英语单词
- java Executor框架
- Codeforces 496E
- 也许你真正的思念和牵挂从此开始了
- Redis深入之对象
- JavaMail 客户端发送邮件,如何修改服务器端口
- Ubuntu linux下设置IP配置命令
- 常用的android设计模式
- js-上传图片预览
- 她不会为了生活向你伸手讨要钱财。
- QT刷单平台哪个好
- Eclipse 标尺错误标记悬浮提示
- 对象的深拷贝,浅拷贝