Redis一些常用命令和集群搭建和SpringBoot整合

Linux上怎样安装gcc

Redis安装
更改redis.conf配置文件

./bin/redis-server ./redis.conf //启动服务
ps -ef | grep -i redis //查看进程
./bin/redis-cli -a root //加密码进行访问redis
keys * //查看键值对

set key value   //添加
mset key value key1 value ... ... //设置多个值
mget key1 key2 key3 ... //查看多个值
del key   //删除
get key     //查看value
getset key value //先get再set
dump key    //查看序列化的值
exists key   //是否存在
pexpire key 过期时间     //给key设置存活时间
persist key     //移除过期时间
ttl key       //查看key过期时间
select 数据库代号数字  //切换数据库
append key 追加的字符串 //字符串追加
strlen key //查看字符串长度
randomkey     //产生随机key
rename key 新key   //改名字
type key    //查看key的类型
setex key 过期时间 value   //存在设置值和过期时间
setnx key value   //不存在设置值,存在不执行
msetnx k1 v1 k2 v2 ... ... //原子操作,一起成功,一起失败
getrange key 开始位置 结束位置    //字符串截取
setrange key 插入的位置 插入的内容    //替换字符串
incr   //自增
incrby key  数值   //自增多少
decr     //自减
decrby key  数值  //自增多少

哈希Hash存取值
hset  key  属性  值   //hmset可以存多属性
hget  key  属性   //hmget可以取多属性
hgetall key    //取全部值
hkeys key  //获取所有hash表的属性
hlen key  //获取hash表中属性的数量
hdel key 属性   //删除hash的一个属性
hexists Hashkey key  //查看hash中的某个key是否存在
hkeys Hashkey //查看hash中所有的key
hvalues Hashkey //查看hash中所有的value
hincrby Hashkey key 自增的数(-号就是自减) //自增hash中的某个字段

List集合
lpush 名 值12...   //从头部插入
rpush 名 值12...    //依次插入
lrange 名 开始索引 结束索引   //查看范围值
lindex 索引号    //查看下标所在的值
pop  名  //删除l,r,bl
lset  名  索引  新值   //修改
lrem key 几个 值 //移除list中的几个相同值
ltrim key 起始下标 末下标 //保留截取的list数据
rpoplpush key newkey //将最右边的值移动到新集合newkey左边元素中

Set集合(无序)
sadd 名 值12...   //添加数据
scard 名     //查看长度
smembers 名    //查看值
sismember 名 值   //查看值是否存在
srandmember key  [数值] //返回集合中一个或多个随机数,加上数值是显示多少条随机数
srem 名 值12...   //删除数据
spop 名 值...		//随机删除数据
smove 名12//把名1中的值移动到值2//在命令后加store表示      ????store   新Set 名12
sdiff 名12     //差集
sinter 名12    //交集
sunion 名12   //并集

ZSet有序集合(按序号排序)
zadd 集合名 序号11  序号22 ....    //添加
zrange 集合名  开始  结束    //正序查询
zrevrange 集合名 开始 结束  //反序查询
zcount 集合名  最小序号   最大序号   //查询区间有多少数据

订阅频道
subscribe 频道名     //关注频道
publish 频道名 发送的消息			//频道向客户发送消息

select 数据库   //数据库的切换
move key  数据库索引   //移动数据到数据库
flushdb   //清除当前数据库的所有key
flushall   //清除整个Redis的数据库所有key

multi    //进入事务,之后的操作会进入队列,提交事务按顺序执行队列
exec    //提交事务,如果事务中有命令出错(隐藏性报错除外),那么事务执行不成功
discard  //取消事务
watch key //在事务中监视key,相当于乐观锁,修改的时候会加上之前的值,如果其它地方修改key值变了,至命令不成功,则该事务不会成功

使用UDF函数,数据库触发器保持Redis和数据库同步
redis主从复制,解决普通的高并发和高可用

Redis集群
修改redis.conf配置文件中的
bind 127.0.0.1   //注释掉,允许其他IP访问
port  端口号
daemonize yes   //允许后台运行
pidfile /var/run/redis_端口号.pid
cluster-enabled yes  //支持集群
cluster-config-file nodes-端口号.conf

将redis-trib.rb复制到/usr/local/bin/目录下    //相当于windows下的环境变量
redis-trib.rb create --replicas 1 127.0.0.1:端口号    //执行   
redis5版本后不能用

linux防火墙开端口

redis-cli -h 127.0.0.1 -c -p 7001
info replication //查看当前状态
cluster nodes //查看所有节点信息

安装rvm
Redis笔记
Redis5集群搭建

Redis配置文件讲解

网络

bind 127.0.0.1 #绑定的IP
protected-mode yes #保护模式
port 6379 #端口设置

通用GENERAL

daemonize yes #以守护进程的方式运行,默认是no,我们需要自己开启为yes!
pidfile /var/run/redis_6379.pid #如果以后台的方式运行,我们就需要指定一个pid文件
loglevel notice #日志
logfile "" #日志的文件名
databases 16 #数据库的数量,默认是16个数据库
always-show-logo yes #是否总是显示LOGO

快照
持久化,在规定的时间内,执行了多少次操作,则会持久化到文件.rdb,.aof

# 如果900秒内,如果至少有一个key进行了修改,我们及进行持久化操作
save 900 1
# 如果300秒内,如果有10个key进行了修改,我们及进行持久化操作
save 300 10
# 如果60秒内,如果有10000key进行了修改,我们及进行持久化操作
save 60 10000

stop-writes-on-bgsave-error yes #持久化如果出错,是否还需要继续工作

rdbcompression yes #是否压缩rdb文件,需要消耗一些cpu资源!
rdbchecksum yes #保存rdb文件的时候,进行错误的检查校验!
dir ./ #rdb文件保存的目录

requirepass 123456 //配置文件给redis设置密码
config set requirepass “123456” //命令给redis设置密码
auth 123456 //使用密码进行登录

持久化

appendonly no #默认是不开启aof模式的,默认是使用rdb方式持久化的,在大部分所有的情况下,rdb完全够用!
appendfilename "appendonly.aof" #持久化的文件的名字
appendfsync always #每次修改都会sync,消耗性能
appendfsync everysec #每秒执行一次sync,可能会丢失这1s的数据,默认!
appendfsync no #不执行sync,这个时候操作系统自己同步数据,速度最快!

触发机制

1.save的规则满足的情况下,会自动触发rdb规则
2.执行flushall命令,也会触发我们的rdb规则
3.退出redis,也会产生rdb文件

aof会记录所有的命令,文件比rdb大,执行效率不如rdb,但完整性比较好!
在主从复制中,rdb就是备用了!而aof一般不使用

Redis的发布订阅模式

subscribe 频道 //订阅一个频道
publish 频道 消息 //发布消息到哪个频道

Redis集群

集群配置需要让从机认老大(slaveof 主机地址 主机端口),主机不用修改
info replication:查看集群状态

使用命令配置是暂时的,配置文件是永久的。
主机是写,从机是只读

如果是使用命令行来配置的主从,那么从机如果重启了,就会变为主机,如果再次变为从机,会先从主机同步所有数据

全量复制:复制全部的数据
增量复制:复制修改的数据

如果主机断开了连接,我们可以使用slaveof no one让自己变为主机,如果老大回来了,只能重新连接。

哨兵模式(自动选取老大)

随机投票,票数最高的为主机

配置文件

sentinel monitor myredis 127.0.0.1 6379 1

启动哨兵模式:redis-sentinel 配置文件
如果主机回来了,只能归并到新选的老大当手下

哨兵模式主要配置文件解释

# 端口
port 26379

# 是否后台启动
daemonize yes

# pid文件路径
pidfile /var/run/redis-sentinel.pid

# 日志文件路径
logfile "/var/log/sentinel.log"

# 定义工作目录
dir /tmp

# 定义Redis主的别名, IP, 端口,这里的2指的是需要至少2个Sentinel认为主Redis挂了才最终会采取下一步行为
sentinel monitor mymaster 127.0.0.1 6379 2

# 如果mymaster 30秒内没有响应,则认为其主观失效
sentinel down-after-milliseconds mymaster 30000

# 如果master重新选出来后,其它slave节点能同时并行从新master同步数据的台数有多少个,显然该值越大,所有slave节点完成同步切换的整体速度越快,但如果此时正好有人在访问这些slave,可能造成读取失败,影响面会更广。最保守的设置为1,同一时间,只能有一台干这件事,这样其它slave还能继续服务,但是所有slave全部完成缓存更新同步的进程将变慢。
sentinel parallel-syncs mymaster 1

# 该参数指定一个时间段,在该时间段内没有实现故障转移成功,则会再一次发起故障转移的操作,单位毫秒
sentinel failover-timeout mymaster 180000

# 不允许使用SENTINEL SET设置notification-script和client-reconfig-script。
sentinel deny-scripts-reconfig yes

哨兵模式优缺点

优点:
1、哨兵集群,基于主从复制模式,所有的主从配置优点,它都有
2、主从可以切换,故障可以转移,高可用性的系统
3、哨兵模式就是主从模式的升级,手动到自动,更加健壮
缺点:
1、Redis不好在线扩容的,集群容量一旦到达上限,在线扩容就十分麻烦
2、哨兵模式的配置繁琐

Redis缓存穿透和击穿,雪崩

缓存穿透是大量请求访问不存在的数据

缓存空数据,布隆过滤器

缓存击穿是缓存中一个热点数据失效,大量请求同一时间访问该热点数据

热点数据永不失效,访问数据库时加上分布式锁

缓存雪崩是大量缓存数据失效,Redis宕机,大量请求同时访问数据库

redis高可用,限流降级,缓存(数据)预热

布隆过滤器
布隆过滤器是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层进行校验,不符合则丢弃,从而避免了对底层存储系统的查询压力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值