Redis 概述
-
Redis是一个开源的key-value存储系统。
-
和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
-
支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
-
支持各种不同方式的排序。
-
与memcached一样,为了保证效率,数据都是缓存在内存中。
-
区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。并且在此基础上实现了主从同步。
相关技术
技术实现方案上有
串行 vs 多线程+锁 (memcached) vs 单线程+多路IO复用(redis)
Redis 使用的是单线程+多路IO复用技术
多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)。
与Memcache三点不同: 支持多数据类型,支持持久化,单线程+多路IO复用
Redis应用场景
针对访问频率高的、热门的、时效性要求高的数据、作为缓存数据库进行处理,降低数据库IO压力
常见业务应用有
-
最新N个数据 ——> 通过List 实现按自然时间排序的数据
-
排行榜,TopN ——> 利用 zset 有序集合
-
时效性的数据 ——> 比如 收集验证码 expire 过期
-
计数器,秒杀 ——> 原子性,自增方法INCR DECR
-
去除大量数据中的重复数据 ——> 利用set集合
-
构建队列 ——> 利用list集合
-
发布订阅消息系统 ——> pub/sub 模式
-
...
Redis 安装与启动
准备
- 官网下载Redis的压缩包
- Linux要具备gcc环境(用来编译)
执行步骤
- 上传压缩包到Linux中的 /opt 然后解压
- 进入目录
- 在该目录下执行make命令(编译完成后会出现 .c 文件)
- 执行 make install (默认安装到 /usr/local/bin)
-
查看默认安装目录
-
redis-benchmark:性能测试工具
-
redis-check-aof:修复有问题的AOF文件,
-
redis-check-dump:修复有问题的dump.rdb文件
-
redis-sentinel:Redis集群使用
-
redis-server:Redis服务器启动命令
-
redis-cli:客户端,操作入口
-
Redis服务启动
- 前台启动,需要保持命令行窗口,不能关闭,否则服务会中止【不推荐】
- 后台启动, 执行 redis-server 配置文件路径
Redis服务关闭
- 客户端输入 shutdown 【后台服务中止】
- 杀死redis进程 kill 【后台服务中止】
其他
- 启动客户端 redis-cli
- 退出客户端 exit
- redis 默认16个数据库,类似数组下标从0开始,初始默认使用0号库,使用 select 0~15 进行切换
- flushdb 清空当前库
- flushall 清空所有库