分布式缓存

1.缓存实现高性能

用户访问时响应速度快,所有可以实现高性能

2.缓存实现高并发

3.用缓存需要考虑的问题:

1)缓存与数据库双写不一致

2)缓存雪崩

3)缓存穿透

4)缓存并发竞争

4.redis线程模型

5.为啥redis单线程模型也能效率这么高?

1)纯内存操作

2)核心是基于非阻塞的IO多路复用机制

3)单线程反而避免了多线程的频繁上下文切换问题(百度)

6.redis常用类型

(1)string

这是最基本的类型了,没啥可说的,就是普通的set和get,做简单的kv缓存

(2)hash

这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在redis里,然后每次读写缓存的时候,可以就操作hash里的某个字段。

key=150

value={

“id”: 150,

“name”: “zhangsan”,

“age”: 20

}

hash类的数据结构,主要是用来存放一些对象,把一些简单的对象给缓存起来,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值

value={

“id”: 150,

“name”: “zhangsan”,

“age”: 21

}

(3)list

有序列表,这个是可以玩儿出很多花样的

(4)set

无序集合,自动去重

sorted set

排序的set,去重但是可以排序,写进去的时候给一个分数,自动根据分数排序,这个可以玩儿很多的花样,最大的特点是有个分数可以自定义排序规则

7.redis过期策略

定期删除+惰性删除

所谓定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。

惰性删除:在你获取某个key的时候,redis会检查一下 ,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除,不会给你返回任何东西。

如果没有走定期删除和惰性删除,则走内存淘汰机制,有几种不同的策略。

allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key(这个是最常用的)

lru:全称是Least Recently Used,即最近最久未使用的意思。

面试的时候会问手写lru算法。


  转载请注明: jacky's blog 分布式缓存

 上一篇
环境搭建 环境搭建
1.vue搭建 地址:https://www.cnblogs.com/winter92/p/7117057.html 启动vue项目步骤:进入vue项目,输入命令”cnpm run dev” 2.vmware 秘钥地址 htts://blo
2019-09-03
下一篇 
其他 其他
1、将jar包导入本地仓库mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的versio
2019-09-03
  目录