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

这篇博客介绍了Redis的基础知识,包括全局命令如keys、dbsize、exists、del、expire和type,以及数据结构如String、Hash、List、Set和Zset的内部编码。Redis使用单线程架构和IO多路复用模型,提供高性能服务,其数据结构的不同内部编码在不同场景下能发挥优势。文章还提到了String常用命令的使用案例。
摘要由CSDN通过智能技术生成

一:全局命令

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

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值