1.启动redis
/usr/local/bin
redis-server kconfig/redis.conf
redis-cli -p 6379
2.redis事务
redis单条命令保证原子性,但事务不保证原子性。
没有隔离级别的概念。 不会出现幻读、脏读、不可重复读
特性:一次性、顺序性、排他性。
resis事务的本质:一组命令的集合。一个事务中的所有命令都会被序列化,在事务的执行过程中会按照顺序执行。
开启事务(multi)
命令入队()
执行事务(exec)
DISCARD 放弃事务
事务中有错误的命令,执行事务报错,其他事务也不会执行
虽然第一条命令报错,但其他命令可以执行成功。比如给String数据+1
3.redis锁
悲观锁
很悲观,认为无论什么时候都会出现问题,无论做什么都加锁。
乐观锁
很乐观,认为无论做什么都不会出现问题,所以不会上锁。更新数据的时候去判断一下,在此期间有没有人修改过数据,
mysql具体:(1)获取version (2)更新的时候比较version
具体:
(1)watch 监控
(2)事务执行之前,另外一个线程修改了值,这个时候执行事务报错。
解决办法:
此时解锁,解锁之后再重新监视