常用操作
keys hello*
:查找 key,模糊匹配,可以使用正则表达式,时间复杂度 O(n)exists key
:判断 key 是否存在expire key 100
:设定 key 的过期时间(单位:s)persist key
:抹去 key 的过期时间ttl key
:查看 key 的过期时间select 0
:选定当前数据库,0 为数据库序号(0 ~ 15,一共 16 个数据库)move age 1
:数据库之间的移动,将 age 从当前数据库移动到 1 数据库dbsize
:DB 的 key 数目type myset
:判断类型rename myset yourset
:为 key 重命名randomkey
:随机返回一个 keyflushdb
:删除当前数据库中的所有数据flushall
:删除所有数据库中的所有数据
string 类型
string 类型不仅仅可以存 “hello” 这样的字符串,还可以存储二进制字符串,它是二进制安全的,例如存图片。
基本操作
setnx name tom
: 先检查 name 是否存在,如果已存在,则不进行重新复制,返回 0;否则,创建 name,并赋予 “tom” 值setex color 10 red
:设置color = "red"
并且 color 会在 10s 后移除setrange number 6 00
:字符串替换,注意 “89” 并不会替换number = “0123456789” [cmd] setrange number 6 00 (integer) 10 number = "0123450089"
mset name tony age 10
:设置多个值,与之对应的还有msetnx, msetex mget
getset
:获取旧值并修改为新值getrange nmber 0 5
:两个数字表示 [begIndex, endIndex] 中获取字符串incr key
:自增 1incrby key -5
:自增 -5strlen number
:获取字符串长度apend number hello
:追加字符串,返回新字符串的长度
Hash 类型
hash 类型是一组 key-value,和组的名字 name 组成的一个数据结构,取数据的时间复杂度为 O(1)
[cmd] hmset user name tom password 123456
// 数据结构如下
user {
name: "tom",
password: "123456"
}
基本操作
hset, hsetnx, hsetex, hmset, hincrby, hincr
:与 String 类型的操作大致相同hexists user name
:查看 user.name 是否存在hlen user
:返回 user 属性的个数hkeys user (hvals user)
:返回 user 中所有的 key(或者所有的 value)hgetall user
:返回 user 所有的 key-value
List 类型
list 类型做的十分的灵活,原型是一个有序的列表,拥有下表操作,为双向队列。既可以作为栈使用,又可以作为队列使用
基本操作
lpush (rpush)
:从 list 头压入(从 list 尾部插入)lpop (rpop)
:从 list 头弹出 (从 list 尾部弹出)lrange list 0 -1
:按照 index 位置查询,-1 代表倒数第一个lrem list 5 "one"
:从 list 中移除 5 个 ”one“ 元素,按照 value 位置删除linsert list before (after) world hello
:按照位置插入,hello 插入到 world 前面(后面),按照 value 位置插入lset list 1 four
:按照 index 进行修改,按照 index 位置修改ltrim list 0 2
:只保留 index 为 [0, 2] 的元素,按照 index 位置删除lindex list 1
:按照 index 位置查找llen list
:返回 list 长度
Set 类型
set 类型是跟数学上的 set 定义相同:不能拥有重复元素,两集合可以做:交集、差集、并集。
set 元素的内部排列方式是无序的(访问的方式是系统自动查找到一个元素),查找的时间复杂度为 O(1)
基本操作
sadd myset hello
:返回 1,插入成功;返回 0,插入失败,集合中存在该元素smembers myset
:查找返回 myset 中所有的元素srem myset hello
:删除集合中的 hello,返回 1 表示删除成功,0 表示元素不存在,删除失败spop
:随机弹出一个元素,随机查找单个元素操作sdiff (sinter, sunion) myset1 myset 2
:返回两集合的差(交、并)集smove myset1 myset2 hello
:移动 hello 到 myset2,return 1 (0)
成功(失败)scard myset
:return myset.lengthsismember myset one
:判断 one 是否存在于 myset,return 1 (0)
存在(不存在)srandmember myset
:随机查找一个元素,但不同于spop
不删除
Sorted Set 类型
有序集合(访问的方式是根据 index 或者 score 随机访问)的数据结构可以理解为含有三列的表格
- 第一列:存放 index(从 0 开始,连续)
- 第二列:存放 score(用户指定,可以不连续,可重复)
- 第三列:存放 value
基本操作
zadd myset 1 one
:在 myset 中插入 one,score 为 1,index 由 Redis 内部指定(保证连续)zrange myset 0 -1
:查找 myset 中 index 为 0 和 -1 之间的元素zrangebyscore myset 2 4
:查找元素,根据 scorezrank (zrevrank) myset hello
:查找 index 按照从小到大(从大到小)的顺序,返回 hello 的 indexzcount myset 2 3
:查找元素,根据 score 从 2 到 3zrem myset two
:删除zremrangebyrank myset 1 1
:根据 score 范围删除,return 1 (0)
成功(失败)zincry myset 2 one
:对 one 的 score 加 2,返回 1,操作成功;返回 0,新增 one 成功,score 设定为 2