redis概念
远程字典服务
是一个开源的使用ANSI C语言编写,支持网络,可基于内存亦可持久化的日志类型,ker-value数据库,并提供多种语言的API,它支持多种类型的数据结构,:字符串 散列 列表 集合 有序集合
API:用于构造应用软件的一组子程序定义,协议和工具,这是一套明确定义各个软件组件之间的通信方法
协议:规定各部分之间如何进行交流的一系列规则的集合
API端点:同一个接口中提供特定功能自己的服务提供者,不同的端点可以有不同的协议和不同的格式
redis能干嘛
1、内存存储、持久化,内存中是断电即失的,所以说持久化很重要
2、效率高,可以用于高速缓存
3、发布订阅系统
4、地图信息分析
5、计时器,计数器(浏览量)
redis 事物
1、原子性:一个事物是一个不可分割的工作单位,事物中包括的操作要不都做,要不都不做
2、一致性:事物必须是使数据库一个一致性状态变成另外一个一致性状态,一致性和原子性是密切相关的
3、隔离性:一个事物的执行不能被其它事物干扰,即一个事物内部的操作及使用激光的数据对于并发的其它事物是隔离的,并发执行的各个事物之间不能互相干扰
4、持久性:持久性也称为永久性,指一个事物一旦被提交,它对数据库中的数据的改变就是永久性的,接下来的其它操作或者故障不应该对其有任何影响
在redis事物没有隔离级别的概念
在redis单条命令是保护原子性,但是事物不保证原子性
乐观锁
1、当程序中出现并发情况,就需要保证在并发情况下数据的准确性,以确保当前用户和其他用户一起操作时哦,所得到的结构和他单独操作时的结果是一样的
2、没有做好并发控制,就可能导致脏读、幻读‘不可重复读等问题
在redis中是可以实现乐观锁的
客观锁和悲观锁的区别:
悲观锁:什么时候都会出现问题,所以一直监视着没有执行当前步骤完成之前,不让任何线程执行,十分浪费性能,一般不使用
乐观锁:只有更新数据的时候去判断一下,在此期间是否有人修改过被监视的这个数据,没有的话正常执行事务,反之执行失败