1.存储的数据类型
redis本质上是一个哈希map,key是字符串,value是五种数据类型
2.2种持久化策略
redis主要在内存中,内存属于闪存,断电数据就没惹,持久化就是把数据存到磁盘中去。
两种持久化策略是指redis在内存中运行的时候会把数据传到磁盘中去,防止服务器突然宕机。
3.缓存击穿
缓存的数据被淘汰没了,数据库的数据存储在redis上。最初的时候,数据库的并发非常少,需要把数据缓存到redis中,让redis去抗并发。一些热门的数据应该存储在缓存中,攻击方请求的数据预估没有在缓存,先访问缓存在访问数据,绕过热点数据访问冷门数据,直接访问数据库,如果绕过的频率高,会让数据库崩溃。单条的数据攻击是很难生效的,通常需要不断切换,因为如果单条的话就会存储在缓存中;那开启redis之后mybatis的缓存还需要开吗,大部分开启redis之后,myabtis的缓存就不开了。mybatis不开就需要手写一个针对sql的优化,否则很容易被攻击掉
4.缓存穿透
存储的数据没有,绕过缓存让数据库去抗
Lua脚本:
c语言写的脚本,操作系统自带环境的叫做脚本?配合ngnix访问数据库,速度非常快,一是c语言写的,可以被操作系统直接翻译,占据内存因为没jvm,所以占据内存页很少。
LRU:
页面置换,操作系统的淘汰策略
事务:
跟mysql事务一样,要么都成功,要么都失败;类似如果有9个事务成功1个事务失败,那么都会回滚
redis是运行在内存中,几乎没有cpu浪费,所以不适合用多线程。
redis单纯运行速度,比数据库在磁盘要快不少,redis在内存中(自己开辟一个区域,他是c写的,没有所谓jvm这些东西,redis和jvm是同级别的、、、、、、、),数据本身是在内存里面,redis相对于mysql来说,省去了从磁盘中加载的环节。网路io抵消了不少redis的性能