Linux安装redis
作者QQ:67065435 QQ群:669756510
本站内容全部为作者原创,转载请注明出处!
redis环境搭建(每台redis都执行)
创建配置中要求的数据文件存储位置
mkdir /data mkdir /data/redis mkdir /usr/local/redis下载解压并安装
cd /root wget --no-check-certificate -c https://download.redis.io/releases/redis-7.0.5.tar.gz tar -xf redis-7.0.5.tar.gz cd redis-7.0.5 make PREFIX=/usr/local/redis/ install添加修改配置文件
cp ./redis.conf /usr/local/redis chmod -R 600 /usr/local/redis/redis.conf vim /usr/local/redis/redis.conf # 【LAN_IP】为主redis局域网IP bind 127.0.0.1 ::1 【LAN_IP】 port 6379 timeout 0 daemonize yes pidfile /data/redis/redis.pid logfile /data/redis/redis.log dir /data/redis requirepass ************** notify-keyspace-events Ex # 以下选项只配置在从服务器!!! replicaof 【LAN_IP】 6379 masterauth ************** ESC :wq性能优化 ``` vim /etc/sysctl.conf
vm.overcommit_memory=1 net.core.somaxconn=8192
ESC :wq
vim /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
ESC :wq
echo never > /sys/kernel/mm/transparent_hugepage/enabled echo 8192 > /proc/sys/net/core/somaxconn
sysctl vm.overcommit_memory=1 sysctl net.core.somaxconn=8192
chmod +x /etc/rc.d/rc.local sysctl -p
1. 修改目录归属
useradd -s /sbin/nologin -M redis chown -R redis:redis /data/redis chown -R redis:redis /usr/local/redis
1. 启动redis并设置开机启动
进入单元文件目录
vim /etc/systemd/system/redis.service
[Unit] Description=Redis After=default.target network.target
[Service] User=redis Group=redis Type=forking ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf StartLimitInterval=0 PrivateTmp=true Restart=always RestartSec=5
[Install] WantedBy=multi-user.target
ESC :wq
systemctl daemon-reload systemctl enable redis systemctl start redis
1. 配置防火墙
systemctl unmask firewalld systemctl enable firewalld systemctl start firewalld firewall-cmd --permanent --zone=public --add-port=6379/tcp firewall-cmd --reload
1. 环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/redis/bin
ESC :wq
source /etc/profile
1. 存入数据
redis-cli -h 127.0.0.1
set num 123 save get num quit
1. 批量删除匹配规则数据
redis-cli keys [匹配规则]|xargs redis-cli del
## redis高可用(每台redis都执行)
1. 添加修改配置文件
vim /usr/local/redis/sentinel.conf
protected-mode no port 26379 daemonize yes pidfile "/usr/local/redis/sentinel.pid" logfile "/usr/local/redis/sentinel.log" dir "/tmp" sentinel monitor master 【LAN_IP】 6379 2 sentinel auth-pass master ** sentinel failover-timeout master 2000 sentinel deny-scripts-reconfig yes
ESC :wq
1. 修改目录归属
useradd -s /sbin/nologin -M redis chown -R redis:redis /data/redis chown -R redis:redis /usr/local/redis
1. 启动sentinel并设置开机启动
进入单元文件目录
vim /etc/systemd/system/sentinel.service
[Unit] Description=Sentinel After=default.target network.target
[Service] User=redis Group=redis Type=forking ExecStart=/usr/local/redis/bin/redis-sentinel /usr/local/redis/sentinel.conf StartLimitInterval=0 PrivateTmp=true Restart=always RestartSec=5
[Install] WantedBy=multi-user.target
ESC :wq
systemctl daemon-reload systemctl enable sentinel systemctl start sentinel
1. 配置防火墙
systemctl unmask firewalld systemctl enable firewalld systemctl start firewalld firewall-cmd --permanent --zone=public --add-port=26379/tcp firewall-cmd --reload
1. SncRedis兼容
```yaml
snc_redis:
clients:
default:
type: predis
alias: default
dsn:
- "redis://%redis_pswd1%@%redis_host_master1%:%redis_port1%/%redis_dtbs1%"
- "redis://%redis_pswd1%@%redis_host_slave1_1%:%redis_port1%/%redis_dtbs1%"
- "redis://%redis_pswd1%@%redis_host_slave1_2%:%redis_port1%/%redis_dtbs1%"
- "redis://%redis_pswd1%@%redis_host_slave1_3%:%redis_port1%/%redis_dtbs1%"
options:
replication: sentinel
prefix: "%redis_prefix1%:"
service: "%redis_service1%"
redis数据类型

redis字符串(string)
# 设置指定key的值 set <key> <value> # 获取指定key的值 get <key> # 批量设置指定key的值 mset <key0> <value0> <key1> <value1> <key2> <value2> # 批量获取指定key的值 mget <key0> <key1> <key2> # 将指定key的值加1 incr <key> # 将指定key的值减1 decr <key> # 将指定key的值加step incrby <key> <step> # 将指定key的值减step decrby <key> <step> # 获取指定字符串的长度 strlen <key> # 将指定key删除 del <key> # 适用场景(点赞数、收藏数) 常规【键→值】缓存,用来缓存频繁操作的计数。redis哈希(hash)
# 设置指定key的hkey的值 hset <key> <hkey0> <value0> hset <key> <hkey0> <value0> <hkey1> <value1> <hkey2> <value2> # 获取指定key的hkey的值 hget <key> <hkey0> # 获取指定key的所有hkey的值 hgetall <key> # 获取指定哈希表的长度 hlen <key> # 将指定key删除 del <key> # 适用场景(用户信息、书籍信息) 常规【键→值对】缓存,用来缓存频繁操作的对象。redis队列(list)
# 指定key左入队多个值 lpush <key> <value0> <value1> <value2> # 指定key右入队多个值 rpush <key> <value3> <value4> <value5> # 指定key左出队step个值 lpop <key> <step> # 指定key右出队step个值 rpop <key> <step> # 获取指定key队列左起第step1个到step2个值 lrange <key> <step1> <step2> # 获取指定key队列右起第step1个到step2个值 rrange <key> <step1> <step2> # 获取指定队列的长度 llen <key> # 将指定key删除 del <key> # 适用场景(排队叫号、饭店点餐) 【队列】缓存,用来缓存需要频繁操作排序的队列。redis集合(set)
# 指定key添加多个元素到集合 sadd <key> <value0> <value1> <value2> # 指定key从集合删除多个元素 srem <key> <value0> <value1> <value2> # 指定key获取集合交集 sinter <key0> <key1> <key2> # 指定key获取集合并集 sunion <key0> <key1> <key2> # 指定key获取集合差集 sdiff <key0> <key1> <key2> # 指定key获取集合交集元素数量 sinterstore <key0> <key1> <key2> # 指定key获取集合并集元素数量 sunionstore <key0> <key1> <key2> # 指定key获取集合差集元素数量 sdiffstore <key0> <key1> <key2> # 指定key打印集合中所有元素 smembers <key> # 指定key打印集合中元素数量 scard <key> # 指定key判断元素是否为集合成员 sismember <key> <value0> # 指定key从集合中随机移除count个元素并返回 spop <key> <count> # 指定key从集合中随机获取count个元素并返回 srandmember <key> <count> # 指定key0中的元素移动到key1 smove <key0> <key1> <value0> # 将指定key删除 del <key> # 适用场景(共同关注、共同好友、兴趣圈、抖音'可能认识的人') 【集合】缓存,用来缓存需要频繁操作特定属性成员的集合。redis有序集合(zset)
# 指定key添加多个计分元素到有序集合 zadd <key> <score0> <value0> <score1> <value1> <score2> <value2> # 指定key从有序集合删除多个计分元素 zadd <key> <value0> <value1> <value2> # 指定key获取有序集合中第step0到step1个元素及对应的score zrevrange <key> <step0> <step1> withscores # 将指定key删除 del <key> # 适用场景(成绩榜单、购买榜、订阅榜) 【有序集合】缓存,用来缓存需要频繁操作特定属性计分成员的有序集合。