![](https://img-blog.csdnimg.cn/f034bbf0a6f24d389c58412a7324ec50.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
redis企业级入门与面试解析
文章平均质量分 54
由于内卷原因,面试中不来一手redis,都难以相信,所以本专栏将带大家了解企业中如何使用redis。
小鲍侃java
CSDN博客专家,华为签约作者,全网粉丝10w,阅读量100w+。现任企业架构师,主要分享和讲解毕设,java入门与晋级架构师的技巧与知识。
展开
-
redis面试题(持续更新)
1.你们为啥用Redis? 大量的数据请求可能造成数据库的宕机(如秒杀,热点数据,),redis是使用内存存贮,每秒的运行次数可以达到10w+,可以减少数据库的压力。 2.Redis有哪些数据结构? String、Hash、List、Set、SortedSet。 3.如果有大量的key需要设置同一时间过期,一般需要注意什么? 要设置随机的过期时间,否则造成雪崩。 4.Redis分布式锁怎么实现? 使用set语法,加入jedis.set(lockKey, requestId, SET_IF_NOT_EXI原创 2021-11-20 17:29:03 · 1881 阅读 · 1 评论 -
redis和memcache区别
memcache: 1.memcache吞吐量大。 2.只支持简单的key/value数据结构。 3.不能持久化。 4.多线程异步io 5.key小于50b value小于1m 过期时间小于30天 redis: 1.支持hash,string,list,set.丰富的数据结果 2.可以选择持久化。 3.不需要考虑数据一致性问题。 4.单线程 异步。 5.支持...原创 2020-01-13 20:59:13 · 421 阅读 · 0 评论 -
redis各数据类型使用场景
String:1 存储session token, 2 计数器 3 缓存功能 hash:存储map list:1 实现分页 2 微博下拉刷新 3 微博粉丝数 4 博客发布文章数 5 消息队列 set:去重 zset:带权重的set 有一个score记录权重,可以实现排行榜 热点数...原创 2020-01-03 21:32:49 · 463 阅读 · 0 评论 -
缓存雪崩,穿透和击穿
一 缓存雪崩:大量key同时失效,大量请求发送到db上,导致db宕机。 解决办法:设置key过期时间时,使用随机数 setRedis(Key,value,time + Math.random() * 10000); 二 缓存穿透:大量请求请求一个缓存中没有的key,这些请求直接怼到db上,造成宕机。如发送为负数的入参时。(一般为黑客侵入) 解决办法:1.加入入参的验证,防止非法入参。 ...原创 2019-12-28 20:55:42 · 411 阅读 · 2 评论 -
redis作计数器
插入 @Override public void incr(@Param("id") String id) { ValueOperations<String, Long> operations = redisTemplate.opsForValue(); operations.increment(id, 1L); } 获取 @O...原创 2018-11-03 09:40:51 · 2327 阅读 · 1 评论 -
redis实现队列
Redis设计用来做缓存的,但是由于它自身的某种特性使得它可以用来做消息队列。 它有几个阻塞式的API可以使用,正是这些阻塞式的API让其有能力做消息队列; 另外,做消息队列的其他特性例如FIFO(先入先出)也很容易实现,只需要一个list对象从头取数据,从尾部塞数据即可; Redis能做消息队列还得益于其list对象blpop brpop接口以及Pub/Sub(发布/订阅)的某些接口,它们都是...原创 2020-01-13 20:59:28 · 1443 阅读 · 0 评论 -
redis持久化分析
RDB:RDB做镜像全量持久化,将redis所有的数据以二进制保存,RDB会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据。他是隔一段时间开启子线程,持久化这段时间的数据。 优点:1 使用二进制,文件比较小 2 灾难恢复时因为文件小恢复更快 3 重启更快 4 因为是fork一个子线程进行持久化,所有对效率影响很小。 ...原创 2021-02-01 10:13:20 · 2537 阅读 · 7 评论 -
redis获取key前缀为xxx的key的集合
@Autowired private RedisTemplate redisTemplate; String accessKey = "access" + "*"; Set<String> keys = redisTemplate.keys(accessKey);原创 2021-03-10 14:10:29 · 1822 阅读 · 7 评论 -
为什么Redis单线程却能支撑高并发
一.纯内存操作 二.核心是基于非阻塞的 IO 多路复用机制 三.单线程反而避免了多线程的频繁上下文切换问题 个人理解 1:db操作需要操作磁盘 涉及到io所有效率肯定比内存效率低 2:个人理解就是,redis一次请求需要 连接应答处理器,命令请求处理器,命令回复处理,而这个io多路复制机制就是会同时监控多个请求,同时把每个请求标记上状态放入队列,然后在调用时直...原创 2019-11-15 10:58:01 · 658 阅读 · 1 评论