一.java连接Redis
//使用jedis连接redis客户端
Jedis jedis = new Jedis("120.25.236.89",6379);
//测试是否连接成功
System.out.println(jedis.ping());
二.Redis的事务定义
Redis事务是一个单独的隔离操作,事务中的所有命令都会序列化,按顺序的执行,事务在执行的过程中,不会被其他客户端发送来的命令所打断.
Redis事务的主要作用就是串联多个命令防止别的命令插队
1.Multi 开启一个事务
2.锁
悲观锁和乐观锁
悲观锁:操作的每一个数据都会加上一个锁,没有获得锁不会对数据进行操作
乐观锁:不同的版本号.比较版本号,版本号不一致,操作结束
3.事务的三个特性
1.单独的隔离操作
事务中所有的命令都会序列化,按顺序的执行.
2.没有隔离级别的概念
队列中的命令没有提交之前都不会实际的被执行
3.不保证原子性
Redis同一个事务中如果有一条命令执行失败,其后的命令任然会被执行,没有回滚.
三.使用LUA脚本解决少卖问题
LUA脚本在Redis中的优势
将复杂的或者多步的redis操作,写为一个脚本,一次提交给redis执行,减少反复连接redis的次数,提升性能.
LUA脚本是类似redis事务,有一定的原子性,不会被其他命令插队,可以完成一些redis事务性的操作,
但是注意redis的lua脚本功能,只有在2.6以上的banbe才可以使用.