一、Redis常见客户端
Jedis:简单,和命令最相似, API最丰富,多线程,不安全
SpringDataRedis: RedisTemplate,默认线程安全,底层基于Netty(异步支持),用于一般的操作
Redission:底层基于Netty,线程安全,提供很多分布式服务(分布式锁、分布式集合,分布式下的JUC封装),延迟队列;封装了自己的类型,比如getBuket(key,value)
二、Redis实现分布式锁
分布式锁与本地锁的本质是一样的,将并行的操作转换成串行操作
比如商品操作:
比如库存扣减, count =count-1
单体使用sync或者lock
但是在分布式情况下就失效了
Redis的作用就是多个应用使用同一个锁
最简单的实现:setnx key value,delete key(释放锁)
当可以不存在时,返回true,存在,返回false;
有死锁问题