Redis基础技术 - yiyixiaozhi/readingNotes GitHub Wiki
Redis基础技术
启动后,如果连接时出现报错:
Caused by: io.lettuce.core.RedisCommandExecutionException: ERR Client sent AUTH, but no password is set
解决方法,redis-cli.exe配置密码yiyixiaozhi:
127.0.0.1:6379> CONFIG SET requirepass "yiyixiaozhi"
https://hub.docker.com/_/redis?tab=tagshttps://www.runoob.com/docker/docker-install-redis.html
设置docker开机自启
systemctl enable docker.service
systemctl start docker.service
systemctl status docker.service
下载redis
docker pull redis:5.0.7
启动redis
不设置密码,启动:
docker run -itd --name redis-5.0.7 -p 6379:6379 --restart=always redis:5.0.7
设置密码,启动:
docker run -itd --name redis-5.0.7 -p 6379:6379 --restart=always redis:5.0.7 --requirepass 123456
使用配置文件来启动:
redis.conf文件的一些常用配置如下:
bind 将这个注释掉,保证redis可以远程访问
requirepass 设置密码
daemonize 这个要注释掉,不然docker容器起不来
appendonly 用于开启AOF(Append-only file)默认是no,如果想开启,改成yes即可。
hbxy01机器的配置:
从其他设备拷贝配置文件
scp [email protected]:/usr/local/redis-5.0.7/redis.conf /usr/local/redis-5.0.7/redis.conf
chown redis:redis /var/lib/redis/data/
chown redis:redis /usr/local/redis-5.0.7/redis.conf
docker run -itd --name redis-5.0.7 \\
-p 6379:6379 \\
-v /usr/local/redis-5.0.7/redis.conf:/etc/redis/redis.conf \\
-v /var/lib/redis/data:/data \\
--restart=always \\
redis:5.0.7 redis-server /etc/redis/redis.conf
西安135机器的配置:
配置文件位置:wget http://download.redis.io/redis-stable/redis.conf
这里从服务器进行拷贝
scp [email protected]:/usr/local/redis-5.0.7/redis.conf /mybtrfs/redis-5.0.7/redis.conf
// 创建用户和组
groupadd -r redis && useradd -r -g redis redis
// 修改权限
chown redis:redis /mybtrfs/redis-5.0.7/data/
chown redis:redis /mybtrfs/redis-5.0.7/redis.conf
// 启动
docker run -itd --name redis-5.0.7 \
-p 6379:6379 \
-v /mybtrfs/redis-5.0.7/redis.conf:/etc/redis/redis.conf \
-v /mybtrfs/redis-5.0.7/data:/data \
--restart=always \
redis:5.0.7 \
redis-server /etc/redis/redis.conf
防火墙放行6379端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
进入docker容器中的redis
docker exec -it redis-5.0.7 sh
从其他地方拷贝数据:
先停止docker:
docker stop redis-5.0.7
在源数据redis服务器登录后执行save指令,得到dump.rdb文件
拷贝数据:
scp [email protected]:/var/lib/redis/6379/dump.rdb /var/lib/redis/data/
启动redis服务
docker start redis-5.0.7
查看版本:
# docker exec -it redis-5.0.7 redis-server -v
Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=825c96d6c798641
为现有的redis创建密码或修改密码的方法:
1.进入redis的容器 docker exec -it 容器ID bash
2.进入redis目录 /usr/local/bin
3.运行命令:redis-cli
4.查看现有的redis密码:config get requirepass
5.设置redis密码config set requirepass ****(****为你要设置的密码)
6.若出现(error) NOAUTH Authentication required.错误,则使用 auth 密码 来认证密码
127.0.0.1:6379> auth yyxz@
下载地址:http://download.redis.io/releases/
执行命令:
# 下载
wget http://download.redis.io/releases/redis-stable.tar.gz
# wget http://download.redis.io/releases/redis-5.0.7.tar.gz
# 解压
tar -zxvf redis-stable.tar.gz
# 安装(root账号下)
yum -y install gcc gcc-c++ libstdc++-devel
cd redis-stable
make MALLOC=libc
make install
报错及解决:
[root@MiWiFi-R2D-srv src]# make MALLOC=libc
LINK redis-server
cc: error: ../deps/hiredis/libhiredis.a: No such file or directory
cc: error: ../deps/lua/src/liblua.a: No such file or directory
# 解决办法
cd deps/
make hiredis jemalloc linenoise lua
cd ../src/
make install
测试是否安装成功:
cd /home/yyxz/download/redis/redis-stable/src/
./redis-server
修改文件:
/usr/local/redis-5.0.7/redis.conf
# 初始化密码
requirepass yiyixiaozhi
# 后台进程方式启动
daemonize yes
# 关闭保护模式
## 1、关闭protected-mode模式,此时外部网络可以直接访问
## 2、开启protected-mode保护模式,需配置bind ip或者设置访问密码
protected-mode no
# 注释掉本地登录限制
#bind 127.0.0.1
1、直接启动redis
cd /usr/local/redis-5.0.7/src
./redis-server
2、以后台进程方式启动redis
第一步:修改redis.conf文件
将
daemonize no
修改为
daemonize yes
第二步:指定redis.conf文件启动
./redis-server /usr/local/redis-4.0.6/redis.conf
第三步:关闭redis进程
首先使用ps -aux | grep redis查看redis进程
[root@iZwz991stxdwj560bfmadtZ src]# ps -aux | grep redis
root 18714 0.0 0.1 141752 2008 ? Ssl 13:07 0:00 ./redis-server 127.0.0.1:6379
root 18719 0.0 0.0 112644 968 pts/0 R+ 13:09 0:00 grep --color=auto redis
使用kill命令杀死进程
[root@iZwz991stxdwj560bfmadtZ src]# kill 18714
1、编写redis.conf配置文件
[root@localhost ftpsite]# /usr/local/redis-5.0.7/utils/install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!
2、检查是否redis自动启动
## chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
[root@localhost 6379]# chkconfig --list
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
jenkins 0:off 1:off 2:on 3:on 4:on 5:on 6:off
jexec 0:off 1:on 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
redis_6379 0:off 1:off 2:on 3:on 4:on 5:on 6:off
## 等级0表示:表示关机
## 等级1表示:单用户模式
## 等级2表示:无网络连接的多用户命令行模式
## 等级3表示:有网络连接的多用户命令行模式
## 等级4表示:不可用
## 等级5表示:带图形界面的多用户模式
## 等级6表示:重新启动
查看服务状态:
[root@localhost ~]# systemctl status redis_6379.service
● redis_6379.service - LSB: start and stop redis_6379
Loaded: loaded (/etc/rc.d/init.d/redis_6379; bad; vendor preset: disabled)
Active: active (running) since Wed 2020-01-08 21:40:47 CST; 16min ago
Docs: man:systemd-sysv-generator(8)
Process: 4223 ExecStart=/etc/rc.d/init.d/redis_6379 start (code=exited, status=0/SUCCESS)
Tasks: 4
Memory: 180.0K
CGroup: /system.slice/redis_6379.service
└─4274 /usr/local/bin/redis-server *:6379
Jan 08 21:40:47 localhost.localdomain systemd[1]: Starting LSB: start and stop redis_6379...
Jan 08 21:40:47 localhost.localdomain redis_6379[4223]: Starting Redis server...
Jan 08 21:40:47 localhost.localdomain systemd[1]: Started LSB: start and stop redis_6379.
修改如下文件,关闭Redis时需要密码验证
vim /etc/init.d/redis_6379
#$CLIEXEC -p $REDISPORT shutdown
$CLIEXEC -p $REDISPORT -a yiyixiaozhi shutdown ## Add by bryan,否则Redis阻止关机(默认5分钟)
redis-cli -h 192.168.1.230 -p 6379 -a yyxz@ keys "test*" | xargs redis-cli -h 192.168.1.230 -p 6379 -a yyxz@ del
查找db2的数据示例:
redis-cli -h 192.168.1.230 -p 6379 -a yyxz@ -n 2 keys "test*" | xargs redis-cli -h 192.168.1.230 -p 6379 -a yyxz@ -n 2 del
# 本机登录删除示例:
redis-cli -a yyxz@ keys "t_wx_account::*" | xargs redis-cli -a yyxz@ del
生产环境redis批量删除示例(登录本机后执行):
redis-cli -a yyxz@ keys "third_plat_form*" | xargs redis-cli -a yyxz@ del
redis-cli -a yyxz@ keys "t_wx_account::*" | xargs redis-cli -a yyxz@ del
redis-cli -a yyxz@ keys "t_qz_third_id_map::*" | xargs redis-cli -a yyxz@ del
redis-cli -a yyxz@ keys "t_school::*" | xargs redis-cli -a yyxz@ del
redis-cli -a yyxz@ keys "rel_user_dept::*" | xargs redis-cli -a yyxz@ del
参考:https://www.cnblogs.com/mushroom/p/4738170.html
性能测试:
redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 10000 -q
网络时延分析:
redis-cli --latency -h 172.31.192.2 -p 6379
[yyxz@localhost ~]$ redis-cli -h 192.168.1.152 -p 6379
192.168.1.152:6379> auth yyxz@
OK
192.168.1.152:6379> info
192.168.1.152:6379> select 1
192.168.1.152:6379[1]> config set slowlog-log-slower-than 200
OK
192.168.1.152:6379[1]> config get slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "200"
192.168.1.152:6379> slowlog reset
OK
192.168.1.152:6379> slowlog get 10