【登陆redis服务】
redis-cli
或者redis-cli -p 6379
或者redis-cli -p 6379 -a password
#-a后面为password,此操作需要开启redis.conf文件中的 requirepass选项
【登录远程redis】
redis-cli -h ip -p 6379 -a password
【redis信息】
info \ info replication
clear
exit
shutdown
help
【数据操作】
查看redis中的key keys *
基于key/value形式存储数据 set test1 abc
基于key获取redis中存储的数据 get test1
清除当前数据库数据 flushdb
清除所有数据库数据 flushall
阻塞式持久化 save
异步持久化 bgsave
【key有效时间设计】
设置生效时长-单位秒 语法:expipe key seconds
查看key的剩余时间 TTL key
-2 key已不存在
-1 key没时间,但存在
。
取消时长设置 语法:persist key
设置生效时长-单位毫秒 语法:pexpire key millisecond
【常用数据类型——字符串,散列,列表,集合,有序集合】
【String——空间动态分配,可以实现递增递减,拼接可记录日志。】
当是整数时,可自增。并返回结构 语法:incr key
指定增长系数 incrby key 2
减少指定系数 decr key
decrby key 2
从尾部追加值 append key value
【计算长度】不存在,空串,返回0 strlen key
【多值操作】 语法:mset key value [key value …]
【Hash类型——大哈希存小哈希,无序,】
不区分插入和更新,插入返回1,更新返回0 hset key field value
hget key field
散列的自增,自减用负数 hincrby key field -1
淘汰品: hmset key field value [field value…]
hmget key field [field]
属性是否存在 hexists key field
删除属性 hdel key field [field]
单独获取字段kv hkeys/hvals key
查看所有 hgetall key
【List类型——链式,左栈右队列】
头部添加字符串 lpush key value [value]
注意:最后进的在最左边
取偏移量 START 和 END之间 lrange key -1 -2
正向下标0123 反向下标-1-2-3
尾部添加 rpush key value [value]
注意:先进的排前头
清空集合元素 del key
在某位置之前和之后添加字符串 linsert key before "where" "what"
设置list中指定下标的元素值(一般用于修改)lset key "index" "what"
删除一定数量的value lrem key count element
保留范围内的数据 ltrim key start stop
从头部取出(几个)元素 lpop key count
阻塞式的取出尾元素 brpop
返回长度 llen key
按下标返回元素 lindex key index
取链1的尾部,放入链2的头部(原子性) rpoplpush key1 key2
【Set类型】
添加元素,重复则失败 sadd key value
删除元素 srem
获取元素 smembers key
取出一个随机元素 spop key
获取元素个数 scard key
移动一个元素到另一个set smove key1 key2 source
并集两个set。并返回 sunion
判断是否存在 sismember key member
【redis事务指令】
开启事务 multi
提交事务 exec
取消事务 discard
监控 watch
取消监控 unwatch
【Redis架构设计——主从架构】
第一步:
删除原有的redis容器 docker rm -f redis容器名
第二步:
进入宿主机docker目录,将配置目录拷贝两份 cp -r redis01/ redis02
cp -r redis01/ redis03
第三步:
启动三个新的redis容器——端口号,目录名,需要改。
docker run -p 6380:6379 --name redis6380
-v /usr/local/docker/redis02/data:/data
-v /usr/local/docker/redis02/conf/redis.conf:/etc/redis/redis.conf
-d redis redis-server /etc/redis/redis.conf
–appendonly yes
第四步:
检测redis服务[role:] info replication
第五步:
检测redis6379的ip docker inspect redis6379
第六步:
登录6380设置Master/Slave架构 slaveof 172.17.0.2 6379
如果有密码,在slave的redis.conf文件中 masterauth 密码
【Redis哨兵模式】
第一步:
分别进入三个容器,在/etc/redis目录下执行。IP、端口、服务名,指向Master。
1表示多少个sentinel认为一个master失效时,master才算真正失效。
cat < /etc/redis/sentinel.conf
sentinel monitor redis6379 172.17.0.2 6379 1
EOF
第二步:
在每个redis容器内部的/etc/redis目录下执行,启动哨兵服务。
redis-sentinel sentinel.conf
【Sentinel配置进阶】
sentinel monitor redis6379 172.17.0.2 6379 1
daemonize yes #后台运行
logfile “/var/log/sentinel_log.log” #运行日志
sentinel down-after-milliseconds redis6379 30000 #失效默认30秒认为失效
【Redis集群高可用】
第一步:准备网络环境 docker network create redis-net
查看docker网卡信息 docker network ls
查看docker网络详细信息 docker network inspect redis-net
第二步:准备redis配置模板 mkdir -p /usr/local/docker/redis-cluster
cd /usr/local/docker/redis-cluster
vim redis-cluster.tmpl
在redis-cluster.tmpl中输入以下内容、改IP,宿主机。
port ${PORT}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.126.129
cluster-announce-port
P
O
R
T
c
l
u
s
t
e
r
−
a
n
n
o
u
n
c
e
−
b
u
s
−
p
o
r
t
1
{PORT} cluster-announce-bus-port 1
PORTcluster−announce−bus−port1{PORT}
appendonly yes
port:节点端口,即对外提供通信的端口
cluster-enabled:是否启用集群
cluster-config-file:集群配置文件
cluster-node-timeout:连接超时时间
cluster-announce-ip:宿主机ip
cluster-announce-port:集群节点映射端口
cluster-announce-bus-port:集群总线端口
appendonly:持久化模式
第三步:【shell】
创建节点配置文件,在redis-cluser中执行以下命令
for port in KaTeX parse error: Undefined control sequence: \ at position 18: …eq 8010 8015); \̲ ̲do \ mkdir -p…{port}/conf
&& PORT=
p
o
r
t
e
n
v
s
u
b
s
t
<
.
/
r
e
d
i
s
−
c
l
u
s
t
e
r
.
t
m
p
l
>
.
/
{port} envsubst < ./redis-cluster.tmpl > ./
portenvsubst<./redis−cluster.tmpl>./{port}/conf/redis.conf
&& mkdir -p ./${port}/data;
done
通过cat指令查看配置文件内容
cat /usr/local/docker/redis-cluster/801{0…5}/conf/redis.conf
第四步:
创建集群中的redis节点容器
for port in $(seq 8010 8015);
do
docker run -it -d -p
p
o
r
t
:
{port}:
port:{port} -p 1
p
o
r
t
:
1
{port}:1
port:1{port}
–privileged=true -v /usr/local/docker/redis-cluster/KaTeX parse error: Undefined control sequence: \ at position 56: …dis/redis.conf \̲ ̲ --privileged=…{port}/data:/data
–restart always --name redis-${port} --net redis-net
–sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
done
–privileged=true表示让启动的容器用户具备真正root权限,
–sysctl net.core.somaxconn=1024 这是一个linux的内核参数,用于设置请求队列大小,默认为128,后续启动redis的启动指令需要先放到这个请求队列中,然后依次启动.
第五步:
创建redis-cluster集群配置 docker exec -it redis-8010 bash
改主机IP redis-cli --cluster create 192.168.126.129:8010 192.168.126.129:8011 192.168.126.129:8012 192.168.126.129:8013 192.168.126.129:8014 192.168.126.129:8015 --cluster-replicas 1
最后的1表示主从比例
查看集群节点数 cluster nodes
查看集群基本信息 cluster info
【其他】
批量停止docker 容器 docker ps -a | grep -i “redis-801*” | awk ‘{print $1}’ | xargs docker stop
批量删除docker 容器 docker ps -a | grep -i “redis-801*” | awk ‘{print $1}’ | xargs docker rm -f
批量删除文件,目录等
rm -rf 801{0…5}/conf/redis.conf
rm -rf 801{0…5}
集群配置文件:
spring:
redis:
cluster: #redis 集群配置
nodes: 192.168.126.129:8010,192.168.126.129:8011,192.168.126.129:8012,192.168.126.129:8013,192.168.126.129:8014,192.168.126.129:8015
max-redirects: 3 #最大跳转次数
timeout: 5000 #超时时间
database: 0
jedis: #连接池
pool:
max-idle: 8
max-wait: 0