Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
1. String类型(一个键最大存储512M)
应用场景
计数器(incr、incrby、decr、decrby属于string数据结构,它们是原子性递增或递减操作)
储存对象json
分布式锁(setnx和expore实现)
redis有一个指令:SETNX key value:如果key不存在,则创建并赋值,成功返回1,失败返回0
redis 提供了一个指令:EXPIRE key seconds,设置key 的生存时间,当key过期(生存时间为0),会自动删除
1 没有获取到锁的客户端不断尝试获取锁
2 服务器端通知客户端锁被释放了
当然第二种情况是最优的(客户端所做的无用功最少),如ZooKeeper通过注册watcher来得到锁释放的通知。而数据库、redis没有办法来通知客户端锁释放了,那客户端就只能傻傻的不断尝试获取锁了。
2. hash类型
存储对象,例如购物车
3. list类型
消息列队(rpush,lpop),秒杀
rpush lrange 最新评论
4. set类型
共同好友,标签
5. zset类型
排行榜