keys * : 查看所有key flushdb :清空当前库 flushall : 清空全部数据库 set keyVame keyValue: 设置key exists keyname: 判断key是否存在 move keyName dbIndex: 移动keyName到dbIndex数据库中 expire keyName 10: 设置keyName 10秒钟的有效时间 ttl keyName: 查看keyName的剩余时间 type keyName: 查看keyName的类型 rename oldkey newkey: 重命名key
2.1 字符串(String)
del key: 删除key append keyName string : 在keyName的value的后面追加一个string,如果该keyName不存在,就相当于set一个keyName strlen keyName : 获取keyName的value的长度 incr keyName : i++ decr: i-- incrby keyName stride: i = i + stride decrby keyName stride: i = i - stride getrange keyName strat end: 获取范围内的字符串内容(闭区间), 0,-1时等同于get keyName setrange keyName offset value: 使用value替换从offset开始的值,替换长度为value的长度 setex(set with expire): set keyName seconds value #设置过期时间 setnx(set is not exist):setnx keyName value # 不存在时再设置(在分布式锁中常常使用!) mset k1 v1 k2 v2 k3 v3 ... :批量设置key-value msetnx k1 v1 k2 v2 #原子性操作,要么全部成功,要么全部失败 getset keyName value : 组合命令,先get keyName,再设置keyName的值为value,如果当前不存在值则返回nil
2.2 列表(list)
list中的值可以重复,且有序。所有的list命令都是L开头的,Redis不区分大小写命令。
lpush listName value: 将一个或多个值,插入到列表头部(左) rpush listName value: 将一个或多个值,插入到列表尾部(右) lrange listName start end: 通过区间获取list具体的值 lpop listName : 移除列表的第一个元素 rpop listName : 移除列表的最后一个元素 lubdex listName index: 获取listName下标为Index的值 llen listName: 返回listName的长度 lrem listName count value: 移除指定的value,count表示要移除几个这样的value ltrim listName strat end: 截取list,只保留[start,end]内的元素 rpoplpush list1 list2: 移除list1的最后一个元素并将其转移到list2中 lset listName index value: 将listName中下标为index的值替换为value(要求index存在,不存在则报错) linsert listName before|after value1 value2: 在value1的前面或后面插入value2
2.3 集合(set)
set中的值不能重复,且无序。 所有的set命令都是s开头的。
sadd setName value: 添加值 smembers setName: 查看setName中的所有值 sismember setName value: 查看setName中是否存在value scard setName: 获取setName中的元素个数 srem setName value: 移除setName中指定的value元素 srandmember setName: 随机抽取一个元素 srandmember setName count: 随机抽取count个元素 spop setName: 随机删除一个setName中的元素 smove setName1 value setName2: 把setName1中的value移到setName2中 sdiff set1 set2: 以set1为参照物,返回set1和set2的差集 sinter set1 set2: 返回set1和set2的交集 sunion set1 set2: 返回set1和set2的并集
2.4 散列(hash)
hash本质上是一个Map集合,形式为key-<key,value>,此时的value是一个map集合!所有的hash命令都是h开头的。
hset hashName key value: 添加值 hget hashName key: 获取key的value hmset hashName key1 value1 key2 value2: 批量添加 hmget hashName key1 key2: 批量获取 hgetall hashName: 获取全部数据 hdel hashName key: 删除hashName指定的key hlen hashName : 获取hashName的键值对数量 hexists hashName key: 判断指定key是否存在 hkeys hashName: 获取所有的key hvals hashName: 获取所有的value hincrby hashName key num: 将hashName中key的value自增num hsetnx hashName key value: 如果key不存在则创建key-value,如果存在则失败
2.5 有序集合(sorted set)
在set的基础上增加了一个值,zset k1 score v1,用来排序
zadd setName score value: 添加数据 zrangebyscore setName -inf +inf : 显示所有数据,从小到大 zrangebyscore setName -inf +inf withscores: 同上,但附带score zrevrange setName 0 -1: 从大到小 zrem setName value: 移除指定的value zcard setName: 查看元素数量 zcount setName start end: 获取指定区间[start,end]的元素数量
2.6 BitMaps 特殊数据类型
位存储
setbit bitMapName offset value: 添加值 getbit bitMapName offset : 获取offset的value bitcount bitMapName: 获取value为1的个数
例如使用bitmap 来记录周一到周日的打卡情况:
查看周四是否打卡:
查看打卡天数: