下载redis
yum install -y wget && wget https://download.redis.io/redis-stable.tar.gz
解压
tar -xzvf redis-stable.tar.gz
安装
cd /redis-stable
make install
报错,未找到cc
运行:yum install gcc
报错:jemalloc/jemalloc.h:没有那个文件或目录
上次运行make install 残余文件导致,清除命令:make distclean
查看redis配置文件
cat redis.conf | grep -v "#" | grep -v "^$"
grep -v “#” 去除注释
grep -v “^$” 去除空白行
RDB保存数据
save
每执行一次save,redis数据就保存一次
手动启动后台保存操作
bgsave
配置文件内容说明
#端口号
port 6379
#是否以守护进程的方式启动redis yes 是 no 否
daemonize yes
#日记文件名
logfile "6379.log"
#日记文件存放位置
dir "/data/redis/log"
#设置RDB方式保存数据时的文件名
dbfilename dump-6379.rdb
#RDB保存数据时是否进行压缩 yes 是 no 否
rdbcompression yes
#RDB恢复数据时是否检测文件是否完好 yes 是 no 否
rdbchecksum yes
#开始aof方式保存数据
appendonly yes
#aof 保存频率 always 每次 everysec 每秒 no 系统自定义
appendfsync everysec
#aof保存文件名
appendfilename appendonly-6379.aof
aof手动重写
bgrewriteaof
aof自动重写
# 到达多大时重写M
auto-aof-rewrite-min-size size
#(当前大小 - 基础大小)/基础大小 > percent 时,重写
auto-aof-rewrite-percentage percent
redis事务基本操作
开启事务
mulit
执行事务
exec
取消事务
discard
redis事务–锁
加锁
watch key [key ...]
可以监控一个,也可以监控多个
取消锁
unwatch
案例
如果监控的 name , name2 值发生改变,下面的事务multi 将执行不成功
分布式锁
setnx
案例
上锁,操作完成后,需要解锁,直接用 del 删除
防止锁死,设置有效时长
expire lock-key second
pexpire lock-key millisecond
二进制位基本操作:设值和取值
#设置
setbit key 位置 值
#取值
getbit key 位置
案例
至于为啥没设置位置1的值,它却有值,应该是没清redis的数据,name 这个key 重复用了
bitmaps 类型的扩展操作
bitop op destkey key1 [key2 ...]
op 可以为
- and:交
- or:并
- not:非
- xor:异或
统计指定key中1的数量
bitcount key [start end]
开始到结束位置 1 的数量 ,不填表示全部
HyperLogLog类型
记录不同值的个数,只记个数,相同的值会覆盖掉
基本操作
#添加
pfadd key value
#统计
pfcount key [key ...]
#合并
pfmerge destkey key [key ...]
GEO地理位置的计算
#添加
geoadd key longitude latitude member [longitude latitude member ...]
#获取
geopos key member [member ...]
#比较两点间的距离
geodist key member1 member2 [M|KM|FT|MI]
#统计指定经纬度,多少距离内所有的点
georadius key longitude latitude radius M|KM|FT|MI [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC]
#统计指定点多少距离内所有的点
georadiusbymember key member radius M|KM|FT|MI [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC]
主从复制
新建两个centos7 下载并安装好redis 主 master 从slave
主redis(即:master)配置文件里设置连接密码:
requirepass password
从redis (即:slave)配置文件里面设置连接密码
masterauth password
开放服务器6379端口号
查看是否开放
firewall-cmd --zone=public --query-port=6379/tcp
no 表示关闭 yes 表示开放
添加端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
success 表示添加成功
重启防火墙
firewall-cmd --reload
再次查看端口是否开放
从redis绑定主redis
slaveof host port
主redis 添加值,如 :set name 123
从redis获取值:get name
主redis再修改name值 ,如:set name abc
从redis再获取name值,如果前后两次都能对上,说明主从连接上了
解绑
从redis
slaveof no one
复制缓冲区大小设置
repl-backlog-size 1mb
两倍的master到slave重连时长再乘每秒产生写命令数据的总量
设置超时时间
repl-timeout 秒
设置master ping 指令发送的频率
repl-ping-slave-period
暂时屏蔽程序对slave的数据访问
slave-serve-stale-data yes|no
从库slave只读不写配置
slave-read-only yes|no
集群
在redis.conf里面配置cluster
#设置加入cluster,成为其中的节点
cluster-enabled yes|no
#cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
cluster-config-file filename
#节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
cluster-node-timeout milliseconds
#master连接的slave最小数量
cluster-migration-barrier <count>
启动redis时,需要在后台加 -c ,不然只能在区间对应的redis服务节点里面操作
redis-cli -c -p 端口号
使用ruby方式启动cluster集群
#查看ruby版本
ruby -v
#查看gem版本
gem -v
#启动cluster集群,在redis 的 src 目录下
./redis-trib.rb create --replicas 1 ip:端口 ip:端口 ip:端口 ip:端口 ip:端口 ip:端口
–replicas 1 代理一个master 连一个slave ,2 代理一个master 连2 个slave
前面的是master ,后面的是slave
cluster节点操作命令
#查看集群节点信息
cluster nodes
#进入一个从节点,切换其主节点
cluster replicate <master-id>
#发现一个新节点,新增主节点
cluster meet ip:port
#忽略一个没有solt的节点
cluster forget <id>
#手动故障转移
cluster failover