@hainingwyx
2019-02-13T20:14:24.000000Z
字数 586
阅读 827
redis
# 查看所有的键
keys *
# 键总数
dbsize
# 键是否存在,存在返回1,不存在返回0
exists key
# 删除键,返回成功删除的键的个数
del key [key ...]
# 键过期,超过过期时间后自动删除键
expire key seconds
# 查询键过期时间,-1表示键未设置过期时间, -2表示键不存在
ttl key
# 键的数据类型,不存在返回none
type key
每种数据结构都有两种以上的内部编码实现。好处是:
1. 可以改进内部编码,而对外的数据结构和命令没有影响
2. 多种内部编码实现可以在不同的场景下发挥各自的优势
# 查询内部编码
object encoding key
redis使用单线程架构和IO多路复用模块实现高性能的内存数据库服务。速度快的原因主要是:
1. 纯内存访问,redis将所有数据放在内存中,内存的访问时间为100ns,这是能达到每秒万级别访问的重要基础。
2. 非阻塞IO,使用epoll作为多路IO复用技术的实现,再加上redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络IO上浪费过多的时间。
3. 单线程避免了线程切换和竞态产生的消耗。
单线程如果某个命令执行时间过长,会造成其他命令的阻塞,对于redis这种高性能的服务来说是致命的,所以redis是面向快速执行场景的数据库。