Redis 概述安装
Redis 概述
- Redis 是一个 开源 的 key-vlaue 存储系统
- 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
- 这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
- 在此基础上,Redis支持各种不同方式的排序。
- memcached一样,为了保证效率,数据都是缓存在内存中。
- 区别的是Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
- 并且在此基础上实现了 master-slave(主从) 同步。
Redis 安装
- Redis 官网:https://redis.io/
首页 Download it 下点击 [Redis 6.2.6 is the latest stable version] 下载最新版本的Redis
- 安装在 Linux 系统中,暂不考虑在 Windows 环境下对 **Redis **的支持
本人是在UOS20下安装,安装步骤:
UOS20参考安装方式:https://blog.csdn.net/weixin_46348477/article/details/122293883
-
打开命令窗口,输入 gcc --version 查看是否有gcc环境
-
进入Redis 压缩包所在目录,输入命令 tar -zxvf redis-6.2.6.tar.gz 进行解压
-
接下来输入 cd redis-6.2.6/ 命令进入目录,然后再输入make 命令
可能会出现下列错误,先检查是否有gcc环境,如果有再输入 make distclean 命令来解决
个人原因:UOS20系统 需要进入 sudo su 下进行操作
-
之后执行 make PREFIX=/opt/software/redis install 命令
-
查看默认安装目录 /usr/local/bin
redis-benchmark: 性能测试工具,可以在自己本子运行,看看自己本子性能如何redis-check-aof: 修复有问题的AOF文件,rdb和aof后面讲
redis-check-dump: 修复有问题的dump.rdb文件。(本人安装没有)
redis-sentinel : Redis集群使用
redis-server : Redis服务器启动命令
redis-cli: 客户端,操作入口
Redis 启动方式
前台启动
在 /usr/local/bin 目录下 执行 redis-server 命令
停止方式 Ctrl C 按键
后台启动(推荐)
-
将解压后的 redis-6.2.1 目录下的 redis.conf 文件 复制到 etc下
命令 :cp redis.conf /etc/redis.conf
-
后台启动设置 daemonize no 改为 yes (后台启动支持改为是)
把etc 下的redis.conf文件中的 daemonize no 改为 yes
-
在 /usr/local/bin目录下执行 redis-server /etc/redis.conf 命令
-
执行 ps -ef | grep redis 命令查看当前Redis服务的进程
-
执行 redis-cli 来连接服务进行操作
-
关闭redis
两种方式:
第一种:redis-cli 进入redis之后执行shutdown
第二种:直接将进程杀死 kill -9 进程号
**问题:**使用第一张方式关闭时, 报出 (error) ERR Errors trying to SHUTDOWN. Check logs.
1.在你redis-cli 同级目录建立 redis-log.log文件并给所有用户可读可写的权限。
# 创建存放redis日志的文件 touch redis-log.log # 给所有人可读可写的权限 chmod 666 redis-log.log
2.修改 /etc/redis.conf 文件中的 logfile 值
3. 先使用进程的方式关闭redis,然后重新启动即可使用shutdown方式关闭
Linux命令:
创建文件:touch 文件名
赋予文件所有人可读可写权限:chmod 666 文件名
Redis 介绍相关知识
- 端口号:6379 由来:merz 对应9键输入法数字 6379 取自意大利演员名字Alessia Merz
- 默认16个数据库,类似数组下标从0开始,初始 默认使用0号库
- 使用命令 select dbid 来切换数据库。如:select 8
- 统一密码管理,所有库密码相同
- dbsize 查看当前数据库的 key 的数量
- flushdb 清空当前库
- flushall 通杀全部库
Redis 是单线程+多路IO复用技术
多路复用是指使用一个线程来检查多个文件描述(Socket)的就绪状态,比如调用select和
poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。
得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)。
与 Memcache 三点不同:支持多数据类型,支持持久化,单线程+多路IO复用
Redis 键(key)
- **keys * ** 查看当前库所有key (匹配:keys * 1)
- exists key 判断某个key 是否存在 (1:存在 0:不存在)
- type key 查看你的key是什么类型
- del key 删除指定的key 数据
- unlink key 根据value 选择非阻塞删除
仅将keys 从 keyspace元数据中删除,真正的删除会在后续异步操作。
- expire key 10 10秒钟:为给定的 key 设置过期时间
- ttl key 查看还有多少秒过期,-1 表示永不过期,-2 表示已过期
e 选择非阻塞删除**
仅将keys 从 keyspace元数据中删除,真正的删除会在后续异步操作。
- expire key 10 10秒钟:为给定的 key 设置过期时间
- ttl key 查看还有多少秒过期,-1 表示永不过期,-2 表示已过期