redis的常见问题简述

redis缓存的应用场景

1缓存(全页面缓存) 2计数器(持久化) 3队列 4位操作 5 分布式锁与单线程机制(秒杀) 6最新列表 7排行榜
redis分布式锁

Redis的数据结构

字符串(String)
哈希(hash)
字符串列表(list)
字符串集合(set)
有序字符串集合(sorted set)

redis常用操作命令

感觉这个总结的更好:
值得参考:https://blog.csdn.net/qq_38174263/article/details/80009943
**

登录** redis-cli -p 5566 -a password
检查key是否存在 EXISTS key
搜索某关键字 KSYS *A
返回一个Key所影响的vsl的类型 TYPE key

1 String
设置一个键的值 SET key value
获取一个建的值 GET key
删除键对 DEL key
同时获取多个 mget key1 key2

2 Hash
设置一个hash HMSET key valueKey value --<key,<valueKey,value>>
获取hash所有key&value HGETALL key
获取hash所有key HKEYS key
获取hash所有keu的vslue HVALS key
获取hash内键值对的长度 HLEN key
给一个hash的某个键值对赋值 HSET key valueKey value
当hash中valueKey不存在时赋值 HSETNX key valueKey value

3 List
给list赋值 LPUSH listName value
按照索引取值 LINDEX listName 1

redis缓存穿透怎么解决

当用户进行第一次查询的时候发现结果为空,那么可以将结果放在缓存中,设置一个短暂的过期时间 布隆Bloom过滤器 先判断key值是否存在,如果不存在,则不访问redis,那这样就可以拦截大量的请求
redis支持的类型 使用场景 :string(字符串),hash(哈希),list(列表左,右),set(集合,无序)及zset(不允许重复sorted set:有序集合)

redis持久化

RDB和AOF

RDB(默认)在指定的时间间隔内将内存中的数据集快照写入磁盘
表示900 秒内如果至少有 1 个 key 的值变化,则保存save
900 1#表示300 秒内如果至少有 10 个 key 的值变化,则保存
save 300 10#表示60 秒内如果至少有 10000 个 key 的值变化,则保存save 60 10000
优点(1)RDB文件紧凑,全量备份,非常适合用于进行备份和灾难恢复。
(2)生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。
(3)RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。
缺点 RDB快照是一次全量备份,存储的是内存数据的二进制序列化形式,存储上非常紧凑。当进行快照持久化时,会开启一个子进程专门负责快照持久化,子进程会拥有父进程的内存数据,父进程修改内存子进程不会反应出来,所以在快照持久化期间修改的数据不会被保存,可能丢失数据。
AOF redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。
AOF redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。
优点
(1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多丢失1秒钟的数据。
(2)AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。
(3)AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。
(4)AOF日志文件的命令通过非常可读的方式进行记录,这个特性非常适合做灾难性的误删除的紧急恢复。比如某人不小心用flushall命令清空了所有数据,只要这个时候后台rewrite还没有发生,那么就可以立即拷贝AOF文件,将最后一条flushall命令给删了,然后再将该AOF文件放回去,就可以通过恢复机制,自动恢复所有数据
缺点
(1)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大
(2)AOF开启后,支持的写QPS会比RDB支持的写QPS低,因为AOF一般会配置成每秒fsync一次日志文件,当然,每秒一次fsync,性能也还是很高的
(3)以前AOF发生过bug,就是通过AOF记录的日志,进行数据恢复的时候,没有恢复一模一样的数据出来。
选择使用
取长补短,两者结合使用是最好的 根据实际需求自行选择
在这里插入图片描述
声明:图片忘了从哪里找的 时间有点久 侵删

redis淘汰策略

volatile-lru:从已设置过期的数据集中挑选最近最少使用的淘汰
volatile-ttl:从已设置过期的数据集中挑选将要过期的数据淘汰
volatile-random:从已设置过期的数据集中任意挑选数据淘汰
allkeys-lru:从数据集中挑选最近最少使用的数据淘汰
allkeys-random:从数据集中任意挑选数据淘汰
noenviction:禁止淘汰数据
redis淘汰数据时还会同步到aof中、从机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值