Redis-3.0.503 常用操作-01
1.为什么说Redis是单线程的?
文件事件处理器
redis 内部使用了一个叫 文件事件处理器( file event handler)的东西,这个文件事件处理器是 单线程的,所以才有了 redis 是单线程的这一说法。

它包含 4 个部分:
- 多个 socket
- IO 多路复用程序
- 文件事件分派器
- 事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)
文件事件处理器 采用 IO 多路复用机制 同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序 会监听多个 socket,会将 socket 产生的事件放入 队列 中排队,事件分派器 每次从队列中取出一个事件,把该事件交给对应的 事件处理器 进行处理。
文件事件处理器 采用 IO 多路复用机制 同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序 会监听多个 socket,会将 socket 产生的事件放入 队列 中排队,事件分派器 每次从队列中取出一个事件,把该事件交给对应的 事件处理器 进行处理。
但是我们学习的时候,比如 Redis 的 bgsave 命令,它的作用是在后台异步保存当前数据库的数据到磁盘,那既然是异步了,肯定是由别的线程去完成的,这怎么还能说 Redis 是单线程的呢?
其实通常说的 Redis 是单线程,主要是指 Redis 对外提供键值存储服务的主要流程,即网络 IO 和键值对读写是由⼀个线程来完成的。除此外 Redis 的其他功能,比如持久化、 异步删除、集群数据同步等,是由额外的线程执⾏的。
2.Redis连接命令
如果修改过配置文件,需要在安装目录打开控制台,使用命令 redis-server.exe 配置文件名称 打开redis服务,再打开一个控制台,输入命令 redis-cli -p 端口号 进行连接。


3.Redis常用操作
1. keys * 用于查看当前数据库中的所有key

2. exists key 判断某个key是否存在

3. del key 删除指定key数据

4. unlink key 根据key选择非阻塞删除(将key从keysSpace元数据中删除,真正的删除会在后续异步操作,4.0版本之后才有)
5. type key 查看指定key是什么类型

6. expire key 秒数 为指定key设置过期时间,单位是秒

7. ttl key 查看指定key还有多久过期,-1表示永不过期,-2表示已经过期

8. select number 用于切换数据库,默认是0号,最大到15号

9. dbsize 查看数据库中的key数量

10. flushdb 清空当前数据库

11. flushall 清空所有数据库

浙公网安备 33010602011771号