大连网站设计制作方案,织梦文章类网站模板,argo wordpress主题,灰色词首页排名接单string list hash
set 无序集合
声明一个key#xff0c;键里面的值是元素#xff0c;元素的类型是string
元素的值是唯一的#xff0c;不能重复
多个集合类型之间可以进行并集#xff0c;交集#xff0c;集查的运算
sadd test1 a b c c d #xff1a;添加5个元素键里面的值是元素元素的类型是string
元素的值是唯一的不能重复
多个集合类型之间可以进行并集交集集查的运算
sadd test1 a b c c d 添加5个元素但它不显示重复元素所以结果为4
smembers test1查看元素
scard test1 查看元素个数
srandmember test1随机返回该集合中的一个元素
spop test1随机移除一个元素
smove test1 test2 a将test1中的元素a移到test2 中
scorted set zest 有序集合
1、声明一个keykey里面有元素元素可以有多个类型也是string元素都是唯一的不能重复 2、每个元素都会关联double类型的分数表示的是权重元素可以通过权重的大小进行排序元素的权重可以享用
zadd test3 1 one 2 two 3 three创建有序集合1、2、3是权重onetwothree才是值
zrange test3 0 -1 withscores 返回结果会显示权重不加withscores就只显示值
zrank test3 oneone在集合当中的索引下标的位置
zcount test3 1 2统计test3有序集合中权重1,2的个数
redis的持久化
在redis当中高可用的技术包括持久化主从复制哨兵模式集群
1、持久化是最简单的高可用方式作用就是备份数据即 将数据保存到硬盘防止进程退出导致数据丢失
redis的持久化方式
1、RDB模式持久化····················人工或者是定时的把内存当中的数据保存到磁盘这是一种冷备份的方式备份的时候不用关闭服务恢复到时候需要关闭默认的持久化方式
2、AOF模式持久化··················· 类似于mysql的二进制日志把所有的redis的操作记录在二进制日志当中恢复到时候从二进制日志的内容进行回复全热备份服务要重启 AOF的持久化的实时性更好进程如果意外丢失恢复的数据是最多的AOF是主流的持久化方式 RDB持久化快照持久化文件的后缀名是 .rdbredis每次重启时都会读取这个rdb文件进行恢复
save和bgsave save可以在配置文件声明也可以手动
bgsave向主进程发送一个信号主进程fork后台新建一个子进程在fork的过程中主进程阻塞创建完子进程之后阻塞解除子进程来创建rdb文件 vim /etc/redis/redis.cnf
307gg
342gg
340gg是否开启rdb文件的压缩
cp -a dump.rdb /opt/
rm -rf dump.rdb
cp -a /opt/dump.rdb /var/lib/redis
AOF持久化一旦开启AOF持久化redis会默认选择aof作为持久化方式并且立刻读取二进制文件开启AOF,一定要在初始化时开启
aof-load-truncated yes
当发现AOF文件被截断时如果是yesredis在重启时发现被截断redis会尽可能的恢复数据继续运行
no如果发现AOF文件被截断redis会拒绝启动
截断写入过程中出现异常内存当中有但是没有完整写入到磁盘
9:10 -9:20 9:15-9:18
AOF的rewrite机制重写 重写表示的是压缩当这个二进制日志文件内容越来越多文件越来越大于是就有了重写的功能对二进制文件进行压缩
20G18G
bgrewriteaof进程来进行处理 redis-clibgrewriteaof
rdb和aof之间的优缺点 1、rdb的文件体积比aof小适合全量备份速度也比aof快 2、rdb不能实时持久化数据如此重要不能够丢失 3、RDB的兼容性比AOF要差新老版本之间不能兼容
生产中redis的版本一定要一致
APF的优点实时持久化的策略兼容性也好文本格式保存的命令缺点文件比较大恢复速度比较慢对磁盘的I/O性能要求也比较高
redis的性能管理
1、查看redis内存使用的情况
used_memory:871704 redis数据占用的内存
userd_memory_rssredis向操作系统申请的内存
userd_memory_peakredis使用系统内存的峰值
rootredis1:/var/lib/redis# redis-cli info memory | grep ratio allocator_frag_ratio:1.23 分配器的碎片比例分配器的碎片越多浪费的内存越多这个值越小越好
allocator_rss_ratio:2.76 分配器使用多少系统的内存
rss_overhead_ratio:2.74 RSS的开销比例占用系统的物理内存的额外开销这个值越低越好越接近0redis的实际的使用比就越高。
mem_fragmentation_ratio:13.92 内存的碎皮比例内存碎片系统分配之后但是不能被利用的内存。越低内存的利用率越高
配置redis的初始化必须要给redis的内存设置阈值不设置阈值只要有需要redis会占满整个内存而且会继续占用交换分区的空间★★★★★★
设置阈值后不会使用交换分区了到达阈值系统会自动回收生命周期不足的key
maxmemory-policy noeviction #设置当达到最大阈值时如何对键值进行回收默认情况下是禁止回收的
volatile-lru根据算法lru从过期时间的数据集合当中淘汰键值主要是针对设置了ttl的键值对
volatile-ttl根据算法淘汰即将过期的数据也是针对设置生命周期的数据 allkeys-lru根据lru算法淘汰最近很少使用的数据
allkeys-random淘汰任意的数据
一直删到小于或者等于内存阈值才不会继续删除
redis的雪崩和redis的击穿radis的穿透
缓存雪崩整个作为数据库缓存的键值对全部失效redis没有办法处理缓存所有的请求全部集中到数据库上数据库很快就崩溃
1、redis集群大面积故障
2.所有的缓存键值对全部被删除作为数据库缓存的键值对上不会设置生命周期的
3、大量的redis请求失败所有的请求直接到了数据库
缓存击穿热点数据的缓存失效大量的热点请求全部转发到了数据库
会导致数据库的性能大幅下降
热点数据设置成永不过期
1、我通过mysql的慢查询日志发现了sql执行的速度突然大幅下降
2、查询redis发现的缓存的键值对消失了
3、我没有redis的密码专门负责数据库的人处理
redis穿透缓存的键值对和数据库当中都没有数据但是依然有客户端不断在请求黑客利用漏洞把大量请求绕过redis去压垮数据库