深入学习Redis| 青训营笔记

75 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天


Redis类型使用

string类型

Hash类型

List类型

Set类型

Sorted set类型

Redis事务:

Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。总的来说就是Redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。

  • Redis事务没有隔离级别的概念

批量操作在发送 EXEC 命令前被放入队列缓存,并不会被实际执行,也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到。

  • Redis不保证原子性

Redis中,单条命令是原子性执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余的命令仍会被执行。

Redis为什么不事务回滚:

多数事务失败是由语法错误或者数据结构类型错误导致的,语法错误说明在命令入队前就进行检测的,而类型错误是在执行时检测的,Redis为提升性能而采用这种简单的事务,这是不同于关系型数据库的,特别要注意区分。Redis之所以保持这样简易的事务,完全是为了保证高并发下的核心问题——性能。

Redis中的数据特征:

Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态

TTL返回的值有三种情况:正数,-1,-2

  • 正数:代表该数据在内存中还能存活的时间
  • -1:永久有效的数据
  • -2 :已经过期的数据 或被删除的数据 或 未定义的数据

数据删除策略的目标:

在内存占用与CPU占用之间寻找一种平衡,顾此失彼都会造成整体redis性能的下降,甚至引发服务器宕机或 内存泄露

针对过期数据要进行删除的时候都有哪些删除策略呢?

  • 1.定时删除
  • 2.惰性删除
  • 3.定期删除

总结:

在学习Redis的过程中,我们应该不断深入学习,并且不断问自己为什么要学Redis,Redis在实际应用中的用途是什么来进行学习,在不断的学习Redis的过程中,我对这种微服务机制有更加理解和体会。