Redis学习笔记
二、下载与安装
2.1 下载
redis官网: http://www.redis.net.cn
图形工具 RDM https://redisdesktop.com/download
2.2 安装
可以在windows系统上安装,但是官方推荐安装在linux系统
1、上传tar.gz包,并解压
tar -zxvf redis-5.0.4.tar.gz
2、安装gcc
redis基于c语言开发,必须安装c语言环境
yum -y install gcc
查看gcc版本
gcc -v
3、进入redis目录,进行编译
检查代码中是否有错误,及运行环境
make
4、编译之后开始安装
make install
Redis可执行文件说明
redis-server: 启动redis
redis-cli:redis命令行客户端
redis-benchmark:redis基准测试工具
redis-check-aof:redis AOF持久化文件检测和修复工具
redis-check-rdb:redis RDB持久化文件检测和修复工具
redis-setinel:启动redis sentinel哨兵模式
Redis基本配置
port:端口
logfile:日志文件
dir:redis工作目录
daemonize:是否以守护进程方式启动redis
https://www.cnblogs.com/wangenzhi/p/10562761.html
2.3 安装后的操作
2.3.1 后台运行方式
redis默认不会使用后台运行,需要修改配置文件:设置daemonize=yes
什么叫做后台启动?和正常启动有什么区别?
正常启动:daemonize no
正常启动会占用进程
redis-server
页面占用了窗口,不能再当前页面执行linux命令,只能先退出redis-server
后台启动:daemonize no
故令其在后台启动,看不到它的启动过程,启动服务时会写成一个进程文件执行
修改redis配置文件 redis.conf
vim /opt/redis/redis.conf
后台启动的命令后需要加上配置文件路径
redis-server /opt/redis/redis.conf
看不到窗口,但实际命令已执行成功
查看redis是否启动
监听6379端口(redis默认端口)
netstat -lntp | grep 6379
正在运行
2.3.2 关闭数据库
关闭数据库
单实例关闭
redis-cli shutdown
多实例关闭:指定端口
redis-cli -p 6379 shutdown
单实例和多实例关闭的区别
redis可以集群,开启多个redis示例,多个实例有不同的端口,需要指定端口号
关闭所有指定端口号的redis实例,关闭的更加彻底
redis多实例部署
单个redis进程一般不能满足实际需求,需要在单台服务器上部署多个redis进程
以充分发挥cpu效能。多台服务器上的redis进程将组成庞大的集群,redis进程可能数千
部署redis实例需要配置像:服务端口、日志文件编号、rdb文件编号等等
Redis单机多实例部署方法
复制多个redis.conf配置文件即可,需要注意每个实例的端口不能冲突
详细配置:https://www.cnblogs.com/youngchaolin/p/11983705.html
为什么是创建多个redis实例而不是创建多个数据库?
1、使用多个数据库通常是很糟糕的,并且有一天会被弃用,而且使用会产生性能上的损失
2、redis是单线程的,使用多实例,将提高性能,因为可以充分利用cpu
3、不同redis实例可以具有不同的持久性配置,然后还有其他优点,例如具有单独的身份验证密码,LRU策略等-只能在实例级别完成。
https://codingdict.com/questions/58232
2.3.3 常用操作
监听指定端口
netstat -lntp | grep 6379
检测后台进程
ps -ef | grep redis
除了监听6379端口验证redis-server启动 netstat -lntp | grep 6379
还可以通过检测后台进程是否存在检验 ps -ef | grep 6379
2.3.4 连接redis并测试
redis-cli
2.3.5 HelloWorld
# 保存数据
set k1 china
# 获取数据
get k1
2.3.6 测试性能
先ctrl + c,退出redis客户端
redis-benchmark
执行命令后,命令不会停止,需要进行手动ctrl + c 停止测试
redis-benchmark 测试性能
注意:要及时退出(5s),因为一直测试,在内存中模拟大量请求。对内存有损耗
其以最大并发数测试性能
执行命令前先退出客户端:ctrl + c
退出性能测试:ctrl + c
[root@localhost bin]# redis-benchmark
====== PING_INLINE ======
100000 requests completed in 2.30 seconds // 在2.30秒内处理10w次请求
50 parallel clients
3 bytes payload
keep alive: 1
75.42% <= 1 milliseconds // 1ms内处理了75.42%请求,使用频率
98.25% <= 2 milliseconds
99.96% <= 3 milliseconds
100.00% <= 3 milliseconds
43459.36 requests per second // 平均每秒钟处理43459.36个请求
2.3.7 默认16个数据库
vim /opt/redis/redis.conf
127.0.0.1:6379> get k1 # 查询k1
"china"
127.0.0.1:6379> select 16 # 切换16号数据库
(error) ERR DB index is out of range # 数据库的下标超出了范围
127.0.0.1:6379> select 15 # 切换15号数据库
OK
127.0.0.1:6379[15]> get k1 # 查询k1
(nil)
127.0.0.1:6379[15]> select 0 OK # 切换0号数据库
127.0.0.1:6379> get k1 # 查询k1
"china"
可以理解为一个数据库中有16张表,redis分为16块区域
查看配置文件,设置数据库数量
设置数据库数。默认数据库是db0,您可以使用select<dbid>在每个连接上选择一个不同的数据库,其中dbid是介于0和 databases-1之间的数字 :0 - 15
切换数据库取key的value,报nil(空值)
2.3.8 数据库键的数量
dbsize
redis在linux支持命令补全(tab)
查看所有键细节 keys *
2.3.9 清空数据库
-
清空当前库
flushdb
-
清空所有库(16个)
flushall
2.3.10 模糊查询
模糊查询的是key值
模糊查询keys命令,有三个通配符:* 匹配多个 ? 匹配一个 [] 通配内部任一字符
-
* 匹配多个字符
-
查询所有键
keys *
-
查询所有以k开头的键
keys k*
-
查询所有以e结尾的键
keys *e
-
查询所有名中包含k的键
keys *k*
-
-
? 匹配单个字符
-
模糊查询k字头,并且匹配一个字符
keys k?
-
你只记得第一个字母是k,他的长度是3
keys k??
-
-
[]:通配括号内的某一个字符
-
已知其他字母,第二个字母可能是a或e
keys r[ae]dis
-
2.3.11 键 (key)
-
exists keyname: 判断键keyname是否存在
-
move keyname dbnum 移动键到几号库
-
ttl 查看键还有多久过期 (-1 永不过期,-2 已过期)
time to live
-
expire keyname 秒数 为键设置过期时间(生命倒计时)
-
type keyname 查看键的数据类型
2.4 卸载 [1]
1、查看redis是否在运行,若在运行,先关闭
使用以下命令查看
ps aux | grep redis
redis-server在6379端口上运行
使用以下命令关闭
kill -9 PID
2、停止redis-server服务
正常停止redis-server服务,使用redis客户端命令
/usr/local/bin/redis-cli shutdown
3、删除/usr/local/bin目录下与redis相关的文件
查看文件:
ls /usr/local/bin/redis-*
删除文件:
rm -rf /usr/local/bin/redis-*
删除调安装时解压的文件目录和所有文件,我的目录名是redis
tar -zxvf redis
[1] https://www.php.cn/windows-421945.html