认识 Redis
什么是 Redis?
Redis(Remote Dictionary Server,远程字典服务)是一种通过 C 语言编写,基于内存的 key-value 数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存、消息队列、分布式锁等场景
Redis 提供了多种数据类型来支持不同的业务场景,并且对数据类型的操作都是原子性的,因为执行命令由单线程负责,不存在并发竞争的问题
除此之外,Redis 还支持事务、持久化、Lua 脚本、多种集群方案(主从复制模式、哨兵模式、切片机群模式)、发布/订阅模式,内存淘汰机制、过期删除机制等
Redis 和 Memcached 有什么区别?
Memcached 也是基于内存的数据库
共同点:
- 都是基于内存的数据库,性能都非常高,一般都用来当做缓存使用
- 都有过期策略
区别:
- 支持的数据类型:
- Redis 支持的数据类型更丰富
- Memcached 只支持 key-value 数据类型
- 数据持久化:
- Redis 支持数据持久化,可以将内存中的数据保持在磁盘中,重启时可以再次加载进行使用
- Memcached 没有持久化功能,数据全部存在内存之中,重启或者挂掉后,数据就没了
- 集群:
- Redis 原生支持集群模式
- Memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据
- 其他:
- Redis 支持发布订阅模型、Lua 脚本、事务等功能
- Memcached 不支持
Redis 版本命名规则
- 版本号第二位是奇数:非稳定版本
- 版本号第二位是偶数:稳定版本
Redis bin
redis-server
:Redis 服务器redis-cli
:Redis 客户端redis-benchmark
:Redis 性能测试redis-check-aof
:修复有问题的 AOF 文件redis-check-dump
:修复有问题的dump.rdb
文件redis-sentinel
:Redis 集群
启动服务:
redis-server <配置文件>
使用客户端连接服务:
# 使用客户端连接服务
redis-cli [-p <端口号>] [-a <密码>]
# 授权密码
auth <密码>
# 配置文件的 requirepass 配置项设置密码
# 如果没有设置密码,则不需要授权
Redis 端口号默认为:6379
关闭服务:
redis-cli [-p <端口号>] [-a <密码>] shutdown
常见命令
命令不区分大小写,而 key 是区分大小写的
exists <key>
:判断某个 key 是否存在type <key>
:查看 key 对应值的数据类型del <key>
:删除指定 key 的数据unlink <key>
:非阻塞删除,仅在 keyspace 元数据中删除,真正的删除在后续异步中操作rename <key> <newKey>
:修改 key 的键名move <key> <dbIndex>
:将当前数据库的 key 移动到指定数据库中select <dbIndex>
:切换数据库- Redis 默认有 0~15,共 16 个数据库(可通过配置文件修改)
- 默认进入 0 号数据库
dbsize
:查看当前数据库 key 的数量keys <pattern>
:查询所有符合给定模式的 key- 如:
keys *
表示查询当前库所有的 key
- 如:
flushdb
:清空当前库flushall
:清空所有库