# exists 判断key是否存在
exists key
# del 删除key
del key
# type 判断key类型type key
# ttl 查看key存活时间
ttl key
2.String结构
介绍:存储字符串类型的key-value
应用场景:验证码、计数器、订单重复提交、用户登录信息、商品详情(序列化json对象存储)、分布式锁
注意:
值的长度不能超过512MB;
key命名规范,不要过长,冒号分割,业务名:表名:ID
# set/get 设置和获取key-valueset key value
get key
# mset/mget 批量设置或获取多个key的值
mset key1 value1 key2 value2
mget key1 key2
# incr 对key对应的值进行加1操作,并返回新的值set num 0
incr num
# incrby 将key对应的数字加increment。如果key不存在,操作之前key就会被置为0
incrby num 5# setex 设置key对应字符串value,并且设置key在给定的seconds时间之后超时过期,原子操作
setex expre 5 value
# setnx 将key设置值为value,如果key不存在等同set命令。当key存在时什么也不做,是set if not exists的简写
setnx key 1# getset 设置key的值,并返回key旧的值
getset key haha
3.List结构
介绍:
字符串列表,按照插入顺序排序
双向链表,插入删除时间复杂度O(1)快,查找为O(n)慢
应用场景:简单队列、最新评论列表、非实时排行榜:定时计算榜单,如手机日销榜单
注意:
通常添加一个元素到列表的头部(左边)或者尾部(右边)
存储的都是String字符串类型
支持分页操作,高并发项目中,第一页数据都是来源list,第二页和更多信息则是通过数据库加载
一个列表最多可以包含2^32-1个元素(每个列表不超过40亿个元素)
# lpush 将一个或多个值插入到列表头部
lpush list 123# rpop 移除并获取列表最后一个元素
rpop list
# llen 获取列表长度
llen list
# lindex 通过索引获取列表中的元素
lindex list 0# lrange 获取key对应的list的指定下标范围的元素,其中0表示列表的第一个元素,1表示列表的第二个元素,-1表示获取所有元素(lrange key 0 -1)
lrange list 0-1# rpush 在key对应的list的尾部添加一个元素
rpush list 45# lpop 从key对应的list的头部删除一个元素,并返回该元素
lpop list
# brpop 移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
brpop list 5# lrem 移除元素,可以指定移除个数
lrem list 31
4.Hash结构
介绍:是一个String类型的field和value的映射表,hash特别适合用于存储对象
应用场景:购物车存储、用户对象、商品详情
注意:每个hash可以存储2^32-1键值对(40多亿)
# hset 设置key指定的哈希集中指定字段的值
hset entity name zhangsan
# hget 返回key指定的哈希集中该字段所关联的值
hget entity name
# hgetall 返回key指定的哈希集中所有的字段和值
hgetall entity
# hdel 从key指定的哈希集中移除指定的field
hdel entity sex
# hexists 返回hash里面field是否存在
hexists entity name
# hincrby 增加key指定的哈希集中指定字段的数值,如果是-1,则是递减
hincrby entity age 3# hmset 设置key指定的哈希集中指定字段的值
hmset entity sex m age 10# hmget 返回key指定的哈希集中指定字段的值
hmget entity sex name
5.Set结构
介绍:将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略
应用场景:
去重
社交应用关注、粉丝、共同好友、统计网站的PV、UV、IP
大数据里面的用户画像标签集合
注意:集合是通过哈希表实现的
# sadd 添加一个或多个指定的member元素到集合的key中,指定的一个或者多个元素member如果已经在集合key中存在则忽略
sadd set a b c
# scard 返回集合存储的key的基数(集合元素的数量)
scard set# sdiff 返回的集合元素是第一个key的集合与后面所有key的集合的差集sdiffset set2
# sinter 返回指定所有的集合的成员的交集
sinter set set2
# sismember 返回成员member是否是存储的集合key的成员
sismember set a
# srem 在key集合中移除指定的元素,如果指定的元素不是key集合中的元素则忽略
srem set a
# sunion 返回给定的多个集合的并集中的所有成员
sunion set set2
# smembers 返回key集合所有的元素
smembers set