最近在学redis,由于笔者是学运维的,所以推荐学习运维的小伙伴参考,希望对大家有帮助!

(图片来源网络,侵删)
redis运维篇下篇:http://t.csdnimg.cn/83sQ1
附加redis多用户管理:http://t.csdnimg.cn/DY3yx

(图片来源网络,侵删)
目录
一.安装redis
二.redis配置调优
三.启用系统管理redis
四.redis客户端认证登录和退出
五.redis的常用数据类型及其操作
5.1字符串
5.2列表
5.3集合
5.4哈希
六.redis的发布订阅
七.redis的不同库切换和运维监控命令
7.1redis的数据库
7.2redis的监控
八.redis配置的动态更新
一.安装redis
1.关闭防火墙和selinux systemctl stop firewalld setenforce 0 2.安装编译工具 yum install -y vim lrzsz gcc gcc-c++ make tar openssl-devel cmake 3.下载redis压缩包 cd /usr/local/bin/ wget http://download.redis.io/releases/redis-6.2.1.tar.gz 4.解压 tar -zxvf redis-6.2.1.tar.gz 5.进入解压目录 cd redis-6.2.1 6.编译安装 make -j2 && make install 7.检查是否安装成功 redis-server -v 8.将redis的配置文件移动到/etc/下 cp redis.conf /etc/
二.redis配置调优
1.备份redis的配置文件 cd cp /etc/redis.conf /etc/redis.conf.bak 2.删除配置文件中的#和空格 sed -i '/^#/d;/^$/d' /etc/redis.conf 3.创建/data/redis目录存放数据 mkdir -p /data/redis 4.修改redis配置文件,在文件中修改以下配置 vim /etc/redis.conf bind 0.0.0.0 #绑定到所有网络接口的设置,允许来自任何IP地址的连接 dir /data/redis requirepass redispwd #Redis服务器的密码 pidfile "redis.pid" #Redis服务器的PID文件,用于记录Redis进程的PID logfile "redis.log" #Redis服务器的日志文件,用于记录Redis的运行日志 daemonize yes #指示Redis服务器在后台运行,而不是在前台运行 5.启动服务 redis-server /etc/redis.conf ps -ef | grep redis 6.调整redis启动的系统参数 调整文件句柄数 [root@bogon ~]# vim /etc/security/limits.conf * - nofile 65535 [root@bogon ~]#reboot #退出重新登录生效 [root@bogon ~]#ulimit -n #查看文件句柄 7.内核参数修改 vim /etc/sysctl.conf net.core.somaxconn = 10240 vm.overcommit_memory = 1 #防止redis的数据丢失 sysctl -p #刷新生效 8.重启redis,发现警报消失 pkill redis redis-server /etc/redis.conf tail -f /data/redis/redis.log
三.启用系统管理redis
#添加系统配置 vim /usr/lib/systemd/system/redis.service [Unit] Description=redis After=network.target [Service] Type=forking ExecStart=/usr/local/bin/redis-server /etc/redis.conf [Install] WantedBy=multi-user.target #使配置生效 pkill redis # 终止所有名为redis的进程 systemctl daemon-reload # 重新加载系统服务配置 systemctl start redis # 启动名为redis的系统服务 ps -ef | grep redis # 查找正在运行的redis进程 systemctl status redis # 获取redis系统服务的状态信息
四.redis客户端认证登录和退出
方式一: redis-cli -a redispwd #使用redis-cli连接到Redis服务器,并使用密码进行认证身份 方式二: redis-cli auth redispwd #登录后验证身份 退出redis: >quit
五.redis的常用数据类型及其操作
数据类型:
字符串、列表、集合、哈希、发布和订阅
5.1字符串
字符串操作: 127.0.0.1:6379> set name aaa #增加key并赋值 OK 127.0.0.1:6379> keys * #显示所有的key 1) "name" 2) "k1" 127.0.0.1:6379> get name #获取key的值 "aaa" 127.0.0.1:6379> set name bbb #重新给key赋值 OK 127.0.0.1:6379> del name #删除key (integer) 1 大小写问题: 127.0.0.1:6379> GET name #命令不区分大小写 127.0.0.1:6379> get Name #key区分大小写 非交互式操作redis redis-cli -a redispwd set nnme bcc redis-cli -a redispwd get nnme redis-cli -a redispwd del nnme
5.2列表
列表特点:
列表是有顺序的
列表可写入重复的数据
向列表中添加数据: rpush右添加 127.0.0.1:6379> rpush names s1 #依次在列表右侧添加数据 (integer) 1 127.0.0.1:6379> rpush names s2 (integer) 2 127.0.0.1:6379> rpush names s3 (integer) 3 127.0.0.1:6379> rpush names s4 (integer) 4 127.0.0.1:6379> rpush names s1 #向列表中添加一个重复的数据 127.0.0.1:6379> lrange names 0 -1 #查看列表中添加的所有数据 列表读取说明: 0:值一,1:值二,-1:最后一个值,-2:倒数第二个值 lpush左添加 127.0.0.1:6379> lpush names s1 #依次在列表左侧添加数据 (integer) 1 127.0.0.1:6379> lpush names s2 (integer) 2 127.0.0.1:6379> lpush names s3 (integer) 3 127.0.0.1:6379> lpush names s4 (integer) 4 127.0.0.1:6379> lpush names s1 #向列表中添加一个重复的数据 127.0.0.1:6379> lrange names 0 -1 #查看列表中添加的所有数据 删除redis列表中的元素: 127.0.0.1:6379> lrem names2 1 s1 #1代表移除一个元素,因为列表元素可重复 127.0.0.1:6379> lrange names2 0 -1 #0代表移除所有指定元素的个数 列表弹出元素: >lpop names2 #向左弹出元素 >rpop names2 #向右弹出元素
5.3集合
特点:元素无顺序,不重复
#创建集合并添加元素 127.0.0.1:6379> sadd jh j1 (integer) 1 127.0.0.1:6379> sadd jh j2 (integer) 1 127.0.0.1:6379> sadd jh j3 (integer) 1 127.0.0.1:6379> sadd jh j4 (integer) 1 127.0.0.1:6379> sadd jh j1 #添加一个重复的元素失败 (integer) 0 127.0.0.1:6379> smembers jh #列出集合中的所有元素 集合的删除: 127.0.0.1:6379> srem jh j1 #删除集合中的元素j1 127.0.0.1:6379> spop jh #从集合中随机弹出一个元素 127.0.0.1:6379> sismember jh j1 #判断元素是否在集合中,返回0不在,1在
5.4哈希
特点:以键值对形式存储
Hash写入: 127.0.0.1:6379> hset haxi name ha #创建一个hash表,名为haxi,再往里面存值,以键值对形式 (integer) 1 127.0.0.1:6379> hset haxi location bj (integer) 1 127.0.0.1:6379> hset haxi age 18 (integer) 1 hash获取值 127.0.0.1:6379> hgetall haxi #获取所有key的值 127.0.0.1:6379> hgetall haxi name #获取单个key的值 hash删除 127.0.0.1:6379> hdel haxi age #删除hash名字里的单个key的值 127.0.0.1:6379> del haxi #删除整个hash
六.redis的发布订阅
127.0.0.1:6379> subscribe fabu #订阅一个频道 127.0.0.1:6379> publish fabu "name shi,age 20,sex boy" #向频道中发送数据,订阅过该频道的窗口都能收到该数据 (integer) 1
七.redis的不同库切换和运维监控命令
7.1redis的数据库
1)redis有多少个数据库 16个数据库 [root@bogon ~]# grep databases /etc/redis.conf databases 16 2)redis数据库的切换 >select 0 >select 1 >select 15 3)redis的各个数据库相互独立 redis的监控命令 1)查看key >keys * #查看所有的key,数据量大的时候容易阻塞 >scan 0 #每次获取11个key,直到获取所有的key,编号从0开始,下一次获取时,按照提示的编号输入scan后的值 当编号再次为0时,获取完成所有数据 2)redis-cli -a redispwd --stat #监控redis的状态 ------- data ------ --------------------- load -------------------- - child - keys mem clients blocked requests connections 55 878.34K 2 0 317 (+0) 116 55 878.34K 2 0 318 (+1) 116 显示多少个key,内存占多少,客户端有多少,请求数是多少,连接数是多少 通过增加客户端及key的操作可以发现变化 3)redis-cli -a redispwd monitor #监控数据操作 操作的命令,增加,删除等都会监控到 4)redis-cli -a redispwd info #查看redis的相关信息 包含Server、Clients、Memory、CPU、Cluster等相关信息
7.2redis的监控
1)查看key >keys * #查看所有的key,数据量大的时候容易阻塞 >scan 0 #每次获取11个key,直到获取所有的key,编号从0开始,下一次获取时,按照提示的编号输入scan后的值 当编号再次为0时,获取完成所有数据 2)redis-cli -a redispwd --stat #监控redis的状态 ------- data ------ --------------------- load -------------------- - child - keys mem clients blocked requests connections 55 878.34K 2 0 317 (+0) 116 55 878.34K 2 0 318 (+1) 116 显示多少个key,内存占多少,客户端有多少,请求数是多少,连接数是多少 通过增加客户端及key的操作可以发现变化 3)redis-cli -a redispwd monitor #监控数据操作 操作的命令,增加,删除等都会监控到 4)redis-cli -a redispwd info #查看redis的相关信息 包含Server、Clients、Memory、CPU、Cluster等相关信息
八.redis配置的动态更新
更新密码 1)重启更新密码 vim /etc/redis.conf requirepass redispwd666 2)动态更新密码 >config get requirepass #动态获取原始密码 >config set requirepass redispwd #动态重新设置密码 >config rewrite #写入配置文件,重启生效 查看redis相关的连接数 >info clients 利用config对配置文件修改 127.0.0.1:6379> config get maxclients #修改redis的最大连接数 1) "maxclients" 2) "10000" 127.0.0.1:6379> config set maxclients 2000 OK 127.0.0.1:6379> config get maxclients 1) "maxclients" 2) "2000"