【愚公系列】2021年12月 Redis数据库-操作命令

2022-12-01 09:54:03 浏览数 (1)

文章目录

  • 一、Redis数据库相关资源
    • 1.重要文档
    • 2.数据结构
    • 3.数据操作行为
  • 二、string类型
    • 1.保存
    • 2.获取
    • 3.删除
  • 三、hash类型
  • 四、list类型
  • 五、set类型
  • 六、zset类型

一、Redis数据库相关资源

1.重要文档

  • Redis 参考命令
  • Redis 官方文档

2.数据结构

  • redis是key-value的数据结构,每条数据都是⼀个键值对
  • 键的类型是字符串
  • 注意:键不能重复

值的类型分为五种:

  • 字符串string
  • 哈希hash
  • 列表list
  • 集合set
  • 有序集合zset

3.数据操作行为

  • 保存
  • 修改
  • 获取
  • 删除

点击中⽂官⽹查看命令⽂档http://redis.cn/commands.html

二、string类型

  • 字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。

1.保存

如果设置的键不存在则为添加,如果设置的键已经存在则修改

  • 设置键值
代码语言:javascript复制
set key value
  • 例1:设置键为name值为itcast的数据
代码语言:javascript复制
set name itcast
  • 设置键值及过期时间,以秒为单位
代码语言:javascript复制
setex key seconds value
  • 例2:设置键为aa值为aa过期时间为3秒的数据
代码语言:javascript复制
setex aa 3 aa
  • 设置多个键值
代码语言:javascript复制
mset key1 value1 key2 value2 ...
  • 例3:设置键为a1值为python、键为a2值为java、键为a3值为c
代码语言:javascript复制
mset a1 python a2 java a3 c
  • 追加值
代码语言:javascript复制
append key value
  • 例4:向键为a1中追加值haha
代码语言:javascript复制
append a1 haha

2.获取

  • 获取:根据键获取值,如果不存在此键则返回nil
代码语言:javascript复制
get key
  • 例5:获取键name的值
代码语言:javascript复制
get name
  • 根据多个键获取多个值
代码语言:javascript复制
mget key1 key2 ...
  • 例6:获取键a1、a2、a3的值
代码语言:javascript复制
mget a1 a2 a3

3.删除

  • 查找键,参数⽀持正则表达式
代码语言:javascript复制
keys pattern
  • 例1:查看所有键
代码语言:javascript复制
keys *
  • 例2:查看名称中包含a的键
代码语言:javascript复制
keys a*
  • 判断键是否存在,如果存在返回1,不存在返回0
代码语言:javascript复制
exists key1
  • 例3:判断键a1是否存在
代码语言:javascript复制
exists a1
  • 查看键对应的value的类型
代码语言:javascript复制
type key
  • 例4:查看键a1的值类型,为redis⽀持的五种类型中的⼀种
代码语言:javascript复制
type a1
  • 删除键及对应的值
代码语言:javascript复制
del key1 key2 ...
  • 例5:删除键a2、a3
代码语言:javascript复制
del a2 a3
  • 设置过期时间,以秒为单位
  • 如果没有指定过期时间则⼀直存在,直到使⽤DEL移除
代码语言:javascript复制
expire key seconds
  • 例6:设置键a1的过期时间为3秒
代码语言:javascript复制
expire a1 3
  • 查看有效时间,以秒为单位
代码语言:javascript复制
ttl key
  • 例7:查看键bb的有效时间
代码语言:javascript复制
ttl bb

三、hash类型

增加、修改

  • 设置单个属性
代码语言:javascript复制
hset key field value
  • 例1:设置键 user的属性name为itheima
代码语言:javascript复制
hset user name itheima
  • 设置多个属性
代码语言:javascript复制
hmset key field1 value1 field2 value2 ...
  • 例2:设置键u2的属性name为itcast、属性age为11
代码语言:javascript复制
hmset u2 name itcast age 11

获取

  • 获取指定键所有的属性
代码语言:javascript复制
hkeys key
  • 例3:获取键u2的所有属性

hkeys u2

  • 获取⼀个属性的值
代码语言:javascript复制
hget key field
  • 例4:获取键u2属性name的值
代码语言:javascript复制
hget u2 name
  • 获取多个属性的值
代码语言:javascript复制
hmget key field1 field2 ...
  • 例5:获取键u2属性name、age的值
代码语言:javascript复制
hmget u2 name age
  • 获取所有属性的值
代码语言:javascript复制
hvals key
  • 例6:获取键u2所有属性的值
代码语言:javascript复制
hvals u2

删除

  • 删除整个hash键及值,使⽤del命令
  • 删除属性,属性对应的值会被⼀起删除
代码语言:javascript复制
hdel key field1 field2 ...
  • 例7:删除键u2的属性age
代码语言:javascript复制
hdel u2 age

可能出现的错误

原因:

  • 强制关闭Redis快照导致不能持久化。

解决方案:

  • 运行config set stop-writes-on-bgsave-error no 命令后,关闭配置项stop-writes-on-bgsave-error解决该问题。

四、list类型

增加

  • 在左侧插⼊数据
代码语言:javascript复制
lpush key value1 value2 ...
  • 例1:从键为a1的列表左侧加⼊数据a 、 b 、c
代码语言:javascript复制
lpush a1 a b c
  • 在右侧插⼊数据
代码语言:javascript复制
rpush key value1 value2 ...
  • 例2:从键为a1的列表右侧加⼊数据0、1
代码语言:javascript复制
rpush a1 0 1
  • 在指定元素的前或后插⼊新元素
代码语言:javascript复制
linsert key before或after 现有元素 新元素
  • 例3:在键为a1的列表中元素b前加⼊3
代码语言:javascript复制
linsert a1 before b 3

获取

  • 返回列表⾥指定范围内的元素
代码语言:javascript复制
start、stop为元素的下标索引
索引从左侧开始,第⼀个元素为0
索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
lrange key start stop
  • 例4:获取键为a1的列表所有元素
代码语言:javascript复制
lrange a1 0 -1

设置指定索引位置的元素值

  • 索引从左侧开始,第⼀个元素为0
  • 索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素
代码语言:javascript复制
lset key index value
  • 例5:修改键为a1的列表中下标为1的元素值为z
代码语言:javascript复制
lset a 1 z

删除

  • 删除指定元素
代码语言:javascript复制
将列表中前count次出现的值为value的元素移除
count > 0: 从头往尾移除
count < 0: 从尾往头移除
count = 0: 移除所有
lrem key count value
  • 例6.1:向列表a2中加⼊元素a、b、a、b、a、b
代码语言:javascript复制
lpush a2 a b a b a b
  • 例6.2:从a2列表右侧开始删除2个b
代码语言:javascript复制
lrem a2 -2 b
  • 例6.3:查看列表a2的所有元素
代码语言:javascript复制
lrange a2 0 -1

五、set类型

增加

  • 添加元素
代码语言:javascript复制
sadd key member1 member2 ...
  • 例1:向键a3的集合中添加元素zhangsan、lisi、wangwu
代码语言:javascript复制
sadd a3 zhangsan sili wangwu

获取

  • 返回所有的元素
代码语言:javascript复制
smembers key
  • 例2:获取键a3的集合中所有元素
代码语言:javascript复制
smembers a3

删除

  • 删除指定元素
代码语言:javascript复制
srem key
  • 例3:删除键a3的集合中元素wangwu
代码语言:javascript复制
srem a3 wangwu

六、zset类型

增加

  • 添加
代码语言:javascript复制
zadd key score1 member1 score2 member2 ...
  • 例1:向键a4的集合中添加元素lisi、wangwu、zhaoliu、zhangsan,权重分别为4、5、6、3
代码语言:javascript复制
zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan

获取

  • 返回指定范围内的元素
  • start、stop为元素的下标索引
  • 索引从左侧开始,第⼀个元素为0
  • 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
代码语言:javascript复制
zrange key start stop
  • 例2:获取键a4的集合中所有元素
代码语言:javascript复制
zrange a4 0 -1
  • 返回score值在min和max之间的成员
代码语言:javascript复制
zrangebyscore key min max
  • 例3:获取键a4的集合中权限值在5和6之间的成员
代码语言:javascript复制
zrangebyscore a4 5 6
  • 返回成员member的score值
代码语言:javascript复制
zscore key member
  • 例4:获取键a4的集合中元素zhangsan的权重
代码语言:javascript复制
zscore a4 zhangsan

删除

  • 删除指定元素
代码语言:javascript复制
zrem key member1 member2 ...
  • 例5:删除集合a4中元素zhangsan
代码语言:javascript复制
zrem a4 zhangsan
  • 删除权重在指定范围的元素
代码语言:javascript复制
zremrangebyscore key min max
  • 例6:删除集合a4中权限在5、6之间的元素
代码语言:javascript复制
zremrangebyscore a4 5 6

0 人点赞