redis常用场景

String的使用场景:

set的使用场景:

hash的使用场景:

zset的使用场景:

list的使用场景:

问题:知道分布式锁吗?有哪些实现方案?你谈谈对redis分布式锁的理解,删key的时候有什么问题?

        java的锁分为两种,这两种锁是不同的东西

1.JVM层面的加锁,单机版的锁

2.分布式微服务架构,拆分后各个微服务之间为了避免冲突和数据故障而加入的一种锁,分布式锁

分布式锁的实现方案:

1.mysql

2.zookeeper

3.redis

redis分布式锁:

多个服务间+保证同一时刻内+同一用户只能有一个请求(防止关键业务出现数据冲突和并发错误)

程序之间操作:

1.加redis分布式锁,包括锁名,包括唯一值value,过期时间,时间搓,(要保证原子性的过期时间写法)

2.做完业务删除锁(在finally里面删除)

3.防止删除别人的锁,

4.删除保证原子性,要用lua脚本或者用redis自身的事务 (实际工作中用lua脚本)

lua脚本方式:

redis自身事务方式:

5.要确保redislock过期时间大于业务执行时间的问题 集群 主挂掉 会丢失锁

4以上的代码行不通 这样得上Redisson落地实现

6.超高并发会报错 问题出现在unlock() 最好加个判断

redis的过期淘汰策略:

面试题:

redis默认内存是多少?在哪里看?如何设置修改?

vim redis.conf 的maxmemory就是默认内存 如果没设置 就是不限制内存大小 (最大)

查看生产上内存是多少:info memory

还可通过命令配置(可动态修改):config set maxmemory 字节数

一般生产上如何配置?

一般推荐Redis设置内存为最大物理内存的四分之三

真要打满了会怎么样?

如果redis内存使用超过了设置的最大值会怎么样?

报oom

结论:用内存淘汰策略

redis缓存淘汰策略:

三种不同的删除策略:定时,惰性,定期

内存淘汰策略:

可以通过配置文件或者命令方式

命令方式(支持动态):config set maxmemory- policy allkeys- lru

配置文件方式:

redis的LRU算法介绍:

概念:LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的数据予以淘汰

Redis持久化:

RDB:做全量替换

AOF:以日志方式来记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值