数据类型:string(字符串),list(链表),hash(哈希),set(集合),zsort(有序集合)
默认16个数据库,可通过配置文件修改。
基本操作
关于存取中文显示时是乱码,解决办法是启动客户端时加入 --raw(redis-cli --raw)
config set requirepass 123456 设置密码
auth 123456 身份验证
ping 如果返回pong则连接成功
quit 退出
select 16 选择数据库
flushdb 清除当前数据库
flushall 清除所有的数据库
keys * 可以使用模糊查询key,有三个通配符 *、?、[]。* 通配任意字符,? 通配单个字符,[] 通配某一个字符。
randomkey 随机获取一个key
exists key 查询是否存在该key
type key 查看key的类型
rename oldkey newkey 重命名key,如果newkey 已经存在,则newkey的原值被覆盖
del key1 key2 删除key,返回删除key的数量
move key dbid 移动key到哪一个数据库
expire key 1 设置过期时间单位秒(pexpire是毫秒)
ttl key 查询key的生命周期,返回秒数(pttl返回毫秒)对于不存在的key、已经过期的key返回-2;永久有效的key,返回-1。
persist key 把指定的key设置为永久有效、
数据类型及操作
String(字符串)
set a a 创建key为a值是a的数据
set a a ex 60 创建时设置60秒过期(或者set a a px 60000)ex、px 不能同时写,否则以后面一个时间为准。
setex a 60 a 创建时设置60秒过期(psetex指定毫秒)
set a a nx nx表示key不存在时执行操作,xx表示key存在时执行操作。(可以防止覆盖已存在的数据)
setnx 当key不存在时创建(没有setxx)
get a 获取key为a的数据
mset k1 v1 k2 v2 kn vn 同时创建多个键值(mget、msetnx同理)
getset key value 赋值并获取值
setrange key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
getrange 获取字符串中[start, end]范围的值字符串下标左数从0开始,右数从-1开始。
start >= length,返回空字符串。end >= length,截取至字符结尾。
incr key 设置该key的值+1,值必须是数字才能加,如果key没有值,则先赋值为0在加1.
incrby key 20 将该key的值增加指定的整数
incrbyfloat key 1.1 将该key的值增加指定的浮点数
decr key 设置该key的值-1(其它同理)
append key value 在字符串的末尾追加字符串
List(链表)
以下命令 l 代表从头部(左边)开始的操作其相反的是 r 尾部(右边)。
lpush key v1 v2 vn 把多个数据添加一个列表的头部(返回其大小)尾部 rpush
lpushx 当key存在时才添加
lrange key start end 查看list在[start,end]的数据,
llen key 查看list的大小
左数从0开始,右数从-1开始。所以想取出全部元素可以用lrange key 0 -1。
lpop key 返回并删除链表头元素
rpop key 返回并删除链表尾部元素
lrem key count value 删除count个与value相同的值
- count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
- count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
- count = 0 : 移除表中所有与 VALUE 相等的值。
ltrim key start end 只保留在[start,end]区间的数,其余的删除
下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推
lindex key index 返回索引为index的值
linsert key after|before v1 v2 在v1之后或之前添加值为v2的元素
lset key index value 设置index位的值
lpop key 弹出第一个元素且返回该元素值
blpop key timeout 堵塞的弹出第一个元素且返回该元素值。在超时时间(秒)内堵塞直到有值
brpoplpush 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
Hash(哈希)
hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
hset user name tom 创建key为user ,域为name 值为tom的数据(类似键值对的值又是一个键值对)
hget user name 获取key为user,field为name的值
hsetnx key field value:当键不存在时才设置值
hgetall user 查看该key下所有的field和value
hincryby user age 2 给制定的值设置增量(也可为负数,即减量)
hincrybyfloat user age 0.5 给制定的值设置浮点数增量(也可为负数,即浮点数减量)
hkeys user 获取该key的所有的field
hvals user 获取该key的所有的值
hlen key 获取哈希字段的数量
hmset key f1 v1 f2 v2 fn vn 同时设置多个值
hget key f1 f2 fn 获取多个值
Set(集合)
集合是无序的字符串集合,集合中的值是唯一的、无序的
sadd key m1 m2 mn 向一个集合添加多个成员
smembers key 查看集合的所有成员
scard key 查看集合大小
sdiff key1 key2 keyn 返回多个集合的差集(交集是sinter,并集是sunion)
sdiffstore newset key1 key2 keyn 将多个集合的差集(交急sinterstore,并集是sunionstore)存储到另一个集合(这里是newset)
sismember key member 判断值是否是该集合的成员,是返回1,不是返回0
smove key1 key2 member (将一个集合的数据移动到另一个集合)将key1集合的member成员移动到key2集合
srandmember key count 随机返回指定数量的成员
spop key count 随机返回并删除指定数量的成员
Sort Set(有序集合)
有序集合由唯一的,不重复的字符串元素组成。有序集合中的每个元素都关联了一个分数(分数值可以是整数值或双精度浮点数)。可以把有序看成hash和集合的混合体,分数即为hash的key。有序集合的成员是唯一的,但分数却可以重复。有序集合中的元素是按序存储的,不是请求时才排序的。
zadd key score1 value1 score2 value2 ··· 先有序集合添加多个数据分数
zrange key start end [withscores] 查询zset在区间[start,end]的数据,withscores显示分数,默认升序(降序zrevrange)
zcard key 查看zset的成员数
zcount key min max 返回zset的分数在区间[min,max]的成员数+inf表示正无穷,-inf表示负无穷
zincrby key num value 对zset对应的value的分数进行增加(增量值为num)
zinterstore newzset keynums key1 key2 ··· 去keynums个zset取交集(并集zunionstore)存储到一个新的有序集合(这里指newzset)
zlexcount key min max 计算有序集合中指定字典区间内成员数量。(下图实例)
- 成员名称前需要加 [ 符号作为开头, [ 符号与成员之间不能有空格(除了[ 还有(和数学上的区间一个道理)
- 可以使用 - 和 + 表示得分最小值和最大值
zrangebylex key min max 返回指定区间的值
zrangebyscore key min max 通过分数返回有序集合指定区间内的成员
zrank key member 返回指定值的索引
zrem key member1 member2 ··· 删除指定成员
zremrangebylex key min max 通过字典区间删除
zremrangebyrank key start end 通过索引删除
zremrangebyscore key min max 通过分数删除