Redis
fly丶
记录平时的工作心得,和自己学习的一些新东西。
展开
-
Redis常见缓存问题
1. 什么是缓存穿透? 缓存一般都是key,value的形式,通过key先去缓存中查,没有再去数据库查。如果故意访问一些本来就不存在就key,就会导致一直去查数据库,如果并发量很大的话,会对数据库造成很大压力。简单来说就是通过不存在的key穿过缓存,请求到数据库。 解决方案: 1.通过key从数据库没查询到数据也进行缓存,将缓存失效时间设置短一点。 2.对key进行过滤,过滤掉不符合的key(比如...原创 2020-01-16 20:25:29 · 165 阅读 · 0 评论 -
Redis的持久化
Redis持久化有两个方式,分别是AOF和RDB。 为什么需要提供两种方式呢?两种方式有啥区别?各自的优缺点是什么?什么场景下用什么方式? 带着这些问题,我们来看一下 1.RDB方式 Redis是一个内存数据库,为了防止数据丢失肯定是需要将数据持久化到磁盘上的,RDB就是Redis提供的一种数据持久化方式,RDB文件保存的是二进制数据。 Redis默认就采用了RDB方式,RDB是通过快照的方式持久...原创 2020-01-15 21:42:38 · 77 阅读 · 0 评论 -
Redis的事务
首先说明一点: Redis中的事务不能回滚,也就是说有五个命令,最后一个执行失败了,前四个依然是执行成功的。 大家可以思考一下,为什么Redis不支持事务呢? 1.因为Redis设计的目的就是为了高性能,如果支持事务,就比较影响性能(比如就像mysql一样,会记录redo,undo日志),这种写磁盘对性能影响较大。 2.Redis的命令都是有编译检查的,也就是说如果你命令错了,输入命令后就会提示错...原创 2020-01-14 20:23:08 · 91 阅读 · 0 评论 -
Redis的数据结构
Redis拥有以下五种数据类型: String(字符类型) Hash(散列类型) List(列表类型) Set(集合类型) SortedSet(有序集合类型,简称zset) 1.String(字符类型) 底层采用的是数组实现,Redis没有采用c语言的数组,而是自己实现一种名为简单动态字符的抽象类型(simple dynamis string,SDS),如下: struct...原创 2020-01-13 19:39:01 · 1433 阅读 · 0 评论