文章目录
- Redis的常用操作命令
- 一、Redis的数据库操作
- 二、数据类型及操作
- 1、String(字符串):
- 2、list(链表):
- 3、hash(哈希):
- 4、set(集合):
- 5、sort set:
Redis的常用操作命令
前面学习在docker中快速拉取redis并运行使用,今天学习redis的基本操作命令。
- redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库.
- redis数据类型:string(字符串)、list(链表)、hash(哈希)、set集合、 zsort(有序集合)
- redis默认有16个数据库,从0开始,15结束,可以通过配置文件修改
- redis能读的速度是110000次/s,写的速度是81000次/s
一、Redis的数据库操作
如果存取中文显示时是乱码,解决办法是启动客户端时加入 --raw(redis-cli --raw)。
操作命令:
命令 | 参数 | 说明 |
config set requirepass | 123 | 设置登陆密码为123 |
config set requirepass | ‘’ | 清空登陆密码 |
config get requirpass | 获取登陆密码 | |
auth | 123 | 验证登陆密码 |
ping | 返回pong,连接成功 | |
quit | 退出客户端 | |
exit | 退出客户端 | |
flushdb | 清除当前数据库 | |
flushall | 清除所有数据库 | |
keys | * | 模糊查询key,*任意通配符 |
keys | ? | 模糊查询key,?通配单个字符 |
keys | [] | 模糊查询key,?通配某个字符 |
randomkey | 随机获取一个key | |
exists key | 查询是否存在该key | |
type key | 查看key的类型 | |
rename | oldkey newkey | 重命名key,如果new key存在,则原值会被覆盖 |
del | key1 key2 | 删除key,1个和多个,返回删除key的数量 |
move | key 2 | 将key移动到数据库2 |
expire | key 2000 | 设置key的过期时间,单位秒 |
pexpire | key 2 | 设置key的过期时间,单位毫秒 |
ttl | key | 查询key的生命周期,返回秒,不存在的key、已经过期的key返回-2;永久有效的key,返回-1。 |
pttl | key | 查询key的生命周期,返回毫秒,不存在的key、已经过期的key返回-2;永久有效的key,返回-1。 |
persist | key | 将指定的key设置为永久有效 |
二、数据类型及操作
1、String(字符串):
命令 | 参数 | 说明 |
set | key value | 创建key和对应的value |
set | key value ex 60 | 创建key和value,并设置过期时间为60秒 |
set | key value px 60 | 创建key和value,并设置过期时间为60毫秒 |
setex | key 60 value | 创建key和value,并设置过期时间为60毫秒 |
set | key value nx | key不存在时,创建key和value |
set | key value xx | key存在时,创建key和value |
setnx | key value | key不存在时,创建key和value(没有setxx命令) |
get | key | 获取key的值 |
mset | key1 value1 key2 value2 | 同时创建多个键值 |
getset | key value | 赋新的值并获取当前值 |
setrange | key 1 value | 使用value覆盖key的值,从第1个开始 |
getrange | 2 3 | 范围获取字符串,开始2,结束3,下标左数从0开始,右数从-1开始 |
incr | key | key的值+1,值必须是数字才能加 |
incrby | key 20 | 将key的值增加20 |
incrbyfloat | key 2.3 | 将key的值增加2.3(浮点数) |
decr | key | key的值-1 |
decrby | key 10 | 将key的值减10 |
decrbyfloat | key 2.5 | 将key的值减2.5(浮点数) |
append | key value | 字符串拼接,在结尾处追加value |
2、list(链表):
从左侧插入数据:lpush key vaule1 value2
从右侧插入数据:rpush key vaule1 value2
只列出左侧命令,右侧l替换成r即可:
命令 | 参数 | 说明 |
lpush | key vaule1 value2 | 向链表左边添加多条数据,返回其大小 |
lpushx | key value | 同上,当key存在时才添加 |
lrange | key start end | 查看list在[start ,end]之间的数据,取出全部数据:lrange key 0 -1 |
llen | key | 查看list的大小 |
lpop | key | 返回并删除链表头元素 |
rpop | key | 返回并删除链表尾部元素 |
lindex | key index | 返回索引为index的值 |
linsert | key after或before v1 v2 | 在v1之后或之前添加值为v2的元素 |
lset | key index value | 设置index位的值 |
blpop | key timeout | 阻塞的弹出第一个元素且返回该元素值。在超时时间(秒)内阻塞直到有值 |
brpoplpush | 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 | |
ltrim | key start end | 只保留在[start,end]区间的数,其余的删除,下标 0 表示列表的第一个元素,-1 表示列表的最后一个元素 |
lrem | key count value | 删除count个与value相同的值, |
- count > 0 : 从表头开始向表尾搜索,移除与 value相等的元素,数量为 count。
- count < 0 : 从表尾开始向表头搜索,移除与 value相等的元素,数量为 count的绝对值。
- count = 0 : 移除表中所有与 value相等的值。
3、hash(哈希):
hash是一个string类型的field和value的映射表,hash特别适合用于**存储对象**。
命令 | 参数 | 说明 |
hset | user name tom | 创建key为user ,域为name 值为tom的数据 |
hmset | key f1 v1 f2 v2 | 同时设置多个字段和值 |
hget | user name | 获取key为user,field为name的值 |
hmget | key f1 f2…fn | 获取多个值 |
hsetnx | key field value | 当键不存在时才设置值 |
hgetall | user | 查看该user下所有的field和value |
hincrby | user age 2 | 给指定的值设置增量(也可为负数,即减量) |
hincrbyfloat | user age 2.3 | 给指定的值设置浮点数增量(也可为负数,即浮点数减量) |
hkeys | user | 获取user的所有的field |
hvals | user | 获取user的所有的值 |
hlen | key | 获取哈希字段的数量 |
4、set(集合):
集合是无序的字符串集合,集合中的值是唯一的、无序的。
命令 | 参数 | 说明 |
sadd | key m1 m2 mn | 向一个集合添加多个成员 |
smembers | key | 返回集合的所有成员 |
sdiff | key1 key2 keyn | 返回多个集合的差集 |
sunion | key1 key2 keyn | 返回多个集合的并集 |
sinter | key1 key2 keyn | 返回多个集合的交集 |
sidffstore | newset key1 key2 keyn | 将多个集合的差集(交急sinterstore,并集是sunionstore)存储到另一个集合(这里是newset) |
sismember | key member | 判断值是否是该集合的成员,是返回1,不是返回0 |
smove | key1 key2 member | 将一个集合的数据移动到另一个集合 |
srandmember | key count | 随机返回指定数量的成员 |
scard | key | 获取集合的大小 |
srem | key member1 member2 | 移除一个或多个集合成员 |
spop | key count | 随机返回并删除指定数量的成员 |
5、sort set:
有序集合由唯一的,不重复的字符串元素组成。有序集合中的每个元素都关联了一个分数(分数值可以是整数值或双精度浮点数)。可以把有序看成hash和集合的混合体,分数即为hash的key。有序集合的成员是唯一的,但分数却可以重复。有序集合中的元素是按序存储的,不是请求时才排序的。
命令 | 参数 | 说明 |
zadd | key s1 v1 s2 v2 sn vn | 向有序集合添加多个数据和分数 |
zrange | key start end [withscores] | 查询集合在区间[start,end]的数据,withscores显示分数,默认升序(降序zrevrange) |
zcard | key | 查看zset的成员数 |
zcount | key min max | 返回集合的分数在区间[min,max]的成员数+inf表示正无穷,-inf表示负无穷 |
zincrby | key num value | 对zset对应的value的分数进行增加(增量值为num) |
zinterstore | newzset keynums key1 key2 ··· | 取keynums个zset取交集(并集zunionstore)存储到一个新的有序集合(这里指newzset) |
zrangebylex | key min max | 返回指定字典区间的值 |
zrangebyscore | key min max | 通过分数返回有序集合指定区间内的成员 |
zrank | key member | 返回指定值的索引 |
zrem | key member1 member2 | 删除指定成员 |
zremrangebylex | key min max | 通过字典区间删除 |
zremrangebyrank | start end | 通过索引区间删除 |
zremrangebyscore | key min max | 通过分数区间删除 |
zlexcount | key min max | 计算有序集合中指定字典区间内成员数量。 |
- 成员名称前需要加 [ 符号作为开头, [ 符号与成员之间不能有空格(除了[ 还有(和数学上的区间一个道理)
- 可以使用 - 和 + 表示得分最小值和最大值