redis作为一个键值对的数据库,其常用的数据类型有5种:字符串类型(String),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset)
应用场景
分布式锁(String)
分布式锁的实现主要有3中方案:zoomkeeper的zk锁、数据库锁以及redis锁。
redis锁采用setnex命令实现。setnex key value:当key不存在时,将key的值设置为value并返回1,如果key已经存在,则不做操作并返回0。获取到返回值1表示拿到了对应key的锁,0则表示获取锁失败。操作完之后需要key删除,表示释放锁
计数器(String)
redis计数器有很多使用场景,如博客的浏览次数等。有些电商网站常常会放出一些顾客限购数量的产品。但有些人会注册多个账号来购买,这时可以使用redis中的set key 1、incr key、get key解决。其中key为用户登入的设备号(手机、pad等设备都有唯一的设备号,这是厂商设定的),第一次购买时次数为1,同一设备购买时次数加1.
分布式全局唯一id
分布式全局唯一id的实现有很多种,像雪花算法、Oracle的自增序列等。redis的分布式全局唯一id通过命令:set custId 1(设置初始值为1)、incr custId(返回2)、incrby custId 100(返回102)