首页 > 其他 > 详细

Redis6 的使用

时间:2021-04-24 20:40:17      阅读:30      评论:0      收藏:0      [点我收藏+]

 

在cenos7中 使用docker 进行快速安装 直接下载redis的最新版本  (当然不使用docker 直接下载压缩包解压安装亦可 )

sudo docker pull redis 

使用 docker images 命令进行查看是否安装成功

使用 docker ps 查看 redis的CONTAINER ID 复制

docker exec -it 8c26e7a42531 /bin/bash     即可进入redis 容器

redis-cli       # 执行客户端命令

127.0.0.1:6379>   即可进行操作

 

---

关于常用命令:

redis默认有0-15 一共16个库 ,可通过 redis/redis.conf中的databases 进行修改; 默认使用0号库  可随时使用select进行切换 如: select 2

使用key * (注意两者间有空格)查看当前库的所有key 当然刚装完数据为空 可以通过set  key value的方法添加测试数据  通过get key获取  mset mget 可对多个kv进行操作

如: set k1  lucy  提示ok 那么现在我在2号库添加了一组键值对数据  使用exists可判断是否存在 如 exists k1  使用type 可对值类型进行判断

关于删除 key del 和unlink 都可以 后者为非阻塞删除 

 需要知道的: 对同一key进行赋值 后者会覆盖前一个值 但使用 setnx key的方式可以避免 如果key的值已存在 则无法覆盖

关于过期 exprie key 10  #10s后过期   ttl key 查看多长时间过期 -1 永不过期 -2已过期

dbsize 查看当前库key的数量 

flashdb 清空当前库

flashall 通杀所有库 这两个清空库的操作慎用

 

append  key 内容 可对该key的内容进行追加 如 append k1 abc  查看:lucyabc

----

然后 redis的数据类型:

 其实面试都要背烂的东西  字符串String  列表list 集合set 有序集合zset  哈希hash

String作为redis最常用的数据类型 

使用 incr 可对数字进行+1操作 相应的 decr key 做减一操作

Redis的列表list是简单的字符串列表,底层实际是双向列表 可以在头尾插入

命令 lpush key value1 value2 value3  从左边放入

查询  lrange key 0 -1  说明要取所有值  :value3 value2 value1 

 rpush key2 value1 value2 value3  从又边放入

查询  lrange key 0 -1  说明要取所有值  :value1 value2 value3 

 

set 无序不可重复 

sadd key vakue value  对应的 smembers key 取出所有值  scard key 返回该key值的个数  spop key 随即吐一个值

hash 和zset 先放一下....

 

 

---

关于redis的配置文件 

如果这时还不清楚 redis被安装在哪 ps -ef|grep redis   可使用命令查看进程号

redis-server所在行的 第一个就是进程号 本机为 6175 所以  ls -l /proc/6175/cwd 即可获得 redis安装地址 光标闪烁 /data

cd /data  失败 ?? 怎么回事  (像查看win文件夹一样 翻了目录) 原来是mydata  cd /mydata/redis/conf/redis.conf

 

 

发布订阅

PUBLISH channel msg
    将信息 message 发送到指定的频道 channel

SUBSCRIBE channel [channel ...]
    订阅频道,可以同时订阅多个频道

UNSUBSCRIBE [channel ...]
    取消订阅指定的频道, 如果不指定频道,则会取消订阅所有频道
PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道,每个模式以 * 作为匹配符,比如 it* 匹配所 有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有 以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类
PUNSUBSCRIBE [pattern [pattern ...]] 退订指定的规则, 如果没有参数则会退订所有规则
PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态
注意:使用发布订阅模式实现的消息队列,当有客户端订阅channel后只能收到后续发布到该频道的消息,之前发送的不会缓存,必须Provider和Consumer同时在线。

 做一个最简单的演示

开两个连接

在其中一个  SUBSCRIBE channel1  #订阅频道1

另一个 publish channel1 hello    #发送给订阅频道信息

 

---

对于redis的保存 也就是持久化 

rdb: redis database 以配置文件中的  "save 时间 操作数"为间隔进行快照保存 比如 save 60 5 表示60s内进行5次操作 生成 dump.rdb快照文件进行保存 

当然除了写操作保存外 flushdb 清空当前库 flushall清空所有库 退出reids 也会进行一次保存 之后bin文件夹下存在dump.rdb文件就会去读取加载

默认情况下 使用的是bgsave 后台保存 主进程 fork分支子进程进行非阻塞保存 为默认方式 当然保存期间的操作无法持久化

 

aof : append only file  日志型保存 conf配置文件中默认关闭 如果两种方式同时开启  aof的优先级高

以秒为单位对写操作进行保存 文件 append.aof 

如果append.aof 或者dump.rdb文件遭到破坏随意修改 则在启动时无法加载 可使用check文件进行修复:

redis-check-rdb redis-check-aof 

命令为:redis-check-rdb -fix 文件名

 

---

redis的主从复制 集群下 master 和slave的信息复制  读写为单向 主节点向子节点写入,默认情况下 每一个redis都是主节点

使用 info replication可查看当前库的信息

使用 solveof 主机地址 端口号 可将当前节点设为子节点  但命令配置是暂时的

可在conf配置文件中进行永久配置  replicaof master port 

子节点启动连接成功后会发送 sync命令 主节点会收集命令集 进行全量同步

 

主节点宕机后该怎么办: 哨兵模式 Sentinel

作为独立进程 监控所有节点 通过发送命令 等待服务器相应  从而监控所有reids实例,当然为了保证哨兵进程的健壮性 需要开启多个哨兵互相监控 在监控节点的同时 各自间也相互监控

在bin/文件夹下 Sentinel.conf的配置文件 中 使用

# sentinel auth-pass <master-name> <password> 进行配置

对主从节点配置完毕,哨兵集群配置完毕后,当主节点宕机 哨兵1 检测不到 主观认为主服务器不可用 :主观下线 等待其他哨兵也判断 主节点宕机,哨兵之间发起投票 票出一个哨兵进行故障转移操作 failover 在solve选举出新的主节点 到此 主节点客观下线

 

----

缓存穿透  (访问不到)

发起查询请求 reids中没有命中 转而向 持久层数据库查询 发现也没有,大量的未命中请求到达持久层数据库 带来压力

解决方案: 1 布隆过滤器 作为一种数据结构 对可能查询的参数以hash进行储存, 在控制层进行校验,不符合皆丢弃

2 缓存空对象 :当储存层为命中 将该空对象进行缓存 防止二次落空

 

缓存击穿 (过期期间被击穿)

大量并发集中访问一个key,在缓存过期期间,直接访问数据库 (假如说是mysql)  对于redis的key的删除  有定期删除 和 惰性删除 ,但大量数据遍历损耗时间 所以使用随机删除过期key redis默认是每隔 100ms随机删除 出现的问题为 已过期的key怎么处理 :惰性删除  的系统去查一下那个 key,才会被redis给删除掉;但如果后期过期key没有被随机和惰性处理掉 这时就需要reids的淘汰机制:比如在过期的key挑选最近最少使用的数据淘汰,任意选择淘汰, 快过期淘汰

解决方案 可以将该热点key设为永不过期 

加分布式锁

 

缓存雪崩 (大量key 在同一时间过期)


redis集群显得很有必要  或者服务降级 数据预热

 

------------恢复内容结束------------

Redis6 的使用

原文:https://www.cnblogs.com/aianyeling/p/14697613.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!