Redis之基础NO.1(数据结构和内部编码)

一:全局命令

1,查看所有键: keys *  ,时间复杂度 O(n)

2,键总数: dbsize ,时间复杂度是 O(1)

3,检查键是否存在:exists  key ,存在返回1,否则返回0

4,删除键: del  key ,成功则返回删除键的个数,否则0。支持删除多个键

5,键过期: expire key seconds 

ttl 命令返回键的剩余过期时间,有三种返回值

大于等于0的整数:键剩余的过期时间。

-1:键没设置过期时间

-2:键不存在

6,键的数据结构类型:type key。如果键不存在,则返回none

二:数据结构和对应的内部编码

1,String: raw,int ,  embstr

2,hash:  hashtable,ziplist

3:list:linkedlist,ziplist

4:set:hashtable,intset

5:zset:skiplist,ziplist

设计的好处:

1:可以改进内部编码,对外的数据结构和命令没有影响

2:多种内部编码实现可以在不同场景下发挥各自优势,例如 ziplist 比较节省内存,但列表元素多时性能会下降,这时Redis会根据配置选项将列表类型内存实现转换为linkedlist

三:单线程架构

Redis使用单线程架构和IO多路复用模型来实现高性能服务

优势:

1,纯内存访问,redis 将所有数据放在内存中,内存的响应时长约为100纳秒。这也是red is达到每秒万级别访问的重要基础

2,非阻塞IO,redis 使用 epoll 作为 IO多路复用技术的实现,再加上Redis自身的事件处理模型将epoll 中的连接,读写,关闭 都转换为事件,不在网络IO上浪费时间

3,单线程避免了线程切换和竞态产生的消耗

四:5种数据结构

String

常用命令

1,设置值:set key value [ex seconds] [px milliseconds]  [nx | xx] 

setex,setnx,sexxx,set  px

具体使用案例可参考:

http://doc.redisfans.com/string/set.html

发布了50 篇原创文章 · 获赞 2 · 访问量 2302

猜你喜欢

转载自blog.csdn.net/eafun_888/article/details/100513580