redis基本操作

Redis基本用法

redis基本操作:

16个数据库 0到15
redis-cli
6379默认监听端口
–raw 输出中文
进入redis
redis-cli
select 0-15 自由选择

redis数据类型

1. string—Strings

使用场景:计数器

添加string类型的变量

set name1 Nathan
set name2 Nathan

获取变量名的值

get name1

查看所有的KEY, *是通配符,表示任意多个字符, keys *会返回当前数据库中所有的键名

keys *

在变量的值后面添加内容

append name1 Jack 

查看name1的值

get name1

删除变量名为name1的变量

del name1

查看变量的类型

type name1

注: 1.string类型的变量,尽量以str_name这种格式命名(见明起义), 2. redis的数据类型和python还有其他编程语言的数据类型有差别, redis的string类型可以加减操作(就比如定义的数字,在redis里面就是string类型,可以加减法操作)

自加:incr
自减:decr
加: incrby
减: decrby

先创建一个变量

set number 1

自加:incr, 比如incr number, 代表number值自增1, 原本是1, 现在就是2

incr number

自减:incr, 比如decr number, 代表number值自减1, 从2变为1

decr number

加: incrby, 比如把number的值加3, 那就是incrby number 3, 结果是4

incrby number 3

减: incrby, 比如把number的值减2, 那就是decrby number 2, 结果是2

decrby number 2

重命名 将number变量重命名为number1

rename number number1

查看number变量是否存在, 返回了(integer) 0, 表示该变量已经不存在

exists number

再查看number1变量是否存在, 返回了(integer) 1, 表示该变量存在

exists number1

所以一旦重命名了以后,原来那个变量就不存在啦

设置过期时间

设置变量name2过期时间为10秒

expire name2 10

变量name2会在10秒钟之后自动消失

如果已经设置过期时间但突然又不想让变量过期,可以使用persist命令

persist name2

这样的话,变量就不会过期啦.

创建变量number3

set number3 3

ttl命令, 用于判断变量是否过期和有没有设置过期时间, -2代表此变量已经过期, -1代表这个变量没有设置过期时间
```redis
ttl number1

返回-1

expire number3 5

等5秒之后,再次输入以下代码:

ttl number3

发现返回值为-2, 说明该变量已经过期了。
注意: 过期后的变量,不能再使用。

list—Lists类型

常见应用场景: 消息队列, 排行榜

创建一个键 lname, 并向右添加元素, 语法: rpush 变量名 元素1 元素2 ……

rpush lname y1 y2 y3 y4 y5 y6 y7

查看变量类型

type lname

查出来是list类型

提取变量元素, lrange 变量名 起始位置 最终位置

lrange lname 0 -1

查询结果:

  1. “y1”
  2. “y2”
  3. “y3”
  4. “y4”
  5. “y5”
  6. “y6”
  7. “y7”

向左添加元素, lpush 变量名 元素1 元素2 ……

lpush lname g5 g6
lrange lname 0 -1

查询结果:

  1. “g6”
  2. “g5”
  3. “y1”
  4. “y2”
  5. “y3”
  6. “y4”
  7. “y5”
  8. “y6”
  9. “y7”

向右添加元素, rpush 变量名 元素1 元素2 ……

rpush lname g7 g8
lrange lname 0 -1

查询结果:

  1. “g6”
  2. “g5”
  3. “y1”
  4. “y2”
  5. “y3”
  6. “y4”
  7. “y5”
  8. “y6”
  9. “y7”
  10. “g7”
  11. “g8”

索引查找: lindex lname 索引号,(索引号也是从0开始的)

lindex lname 3

查询结果: “y2”

修改元素:
lset lname 索引号 元素名

lset lname 2 y10

结果:

  1. “g6”
  2. “g5”
  3. “y10”
  4. “y2”
  5. “y3”
  6. “y4”
  7. “y5”
  8. “y6”
  9. “y7”
  10. “g7”
  11. “g8”

我们可以看到,索引为2,也就是第三个元素改为y10了

删除元素

lpop和rpop

lpop:
删除最前面的元素

lpop lname

结果:
“g6”
会返回一个被删除的元素

lrange lname 0 -1

我们再去看一看, 第一个元素g6已经没有了

  1. “g5”
  2. “y10”
  3. “y2”
  4. “y3”
  5. “y4”
  6. “y5”
  7. “y6”
  8. “y7”
  9. “g7”
  10. “g8”

rpop:
删除最后面的

rpop lname

返回结果:
“g8”

lrange lname 0 -1
  1. “g5”
  2. “y10”
  3. “y2”
  4. “y3”
  5. “y4”
  6. “y5”
  7. “y6”
  8. “y7”
  9. “g7”

我们不难看到, 最后一个元素g8已经删除了

Hash—Hashes类型

常用场景:购物车

Hash类型:Redis的key value键值对模式不变,但value是一个键值对。
添加数据: hset 变量名 key value

hset hname name1 jack1
keys *

查询结果:

  1. “hname”

查看数据(value): hget 变量名 key

hget hname name1

结果: “jack1”

再添加一条数据, 查看新增加数据的value:

hset hname name2 jack2
hget hname name2

结果: “jack2”

如果field 存在,正常读取 field 对应的值。
如果field 不存在,返回 nil。

添加多个数据hmset, 并查询多条数据的value

hmset name1 qiye1 1 qiye2 2 qiye3 3
hmget name1 qiye1 qiye2 qiye3

结果:

  1. “1”
  2. “2”
  3. “3”

hdel 删除域
该命令可以同时删除多个字段,返回值是被删除字段的数量。

如果field 存在,删除字段,返回被删除字段的数量。
如果field 不存在, 返回0

我们添加一个Hname, key和value 分别是name1 和 Nathan

hset Hname name1 Nathan

查看数据:

hget Hname name1

我们把刚才创建好的Hname变量删除

hdel Hname name1

我们再次查看

hget Hname name1

我们可以发现给我们返回了一个(nil)
说明变量Hname已经被我们删除了

读取全部数据 以键值对的形式展现出来

hgetall hname

结果:

  1. “name1”
  2. “jack1”
  3. “name2”
  4. “jack2”

获取指定 key 所有字段的值

hvals hname

结果:

  1. “jack1”
  2. “jack2”

查看有多少个键值对

hlen hname

结果: (integer) 2
有两个键值对

set—Sets类型

set类型是string类型的集合,其特点是集合元素无序且不重复

常见场景: 好友/关注/粉丝/感兴趣的人集合 随机展示 黑名单/白名单

添加数据: sadd 变量名 元素1 元素2……

sadd sname g1 g2 g3 g1

查询sname中的元素, smembers 变量名

smembers sname

结果:

  1. “g4”
  2. “g1”
  3. “g3”
  4. “g2”
    随机删除sname变量中的一个元素, spop 变量名
spop sname

结果:“g3”
将删除的元素展示在结果上
随机删除sname变量中的两个元素(多少个可以自己定义的), spop 变量名 随机删除的元素数量

spop sname 2

结果:

  1. “g1”
  2. “g2”
    同样将删除的元素展示在结果上

在一个变量里面指定删除元素 可指定多个, srem 变量名 member 元素1 元素2 ……

srem sname member g1

返回结果: (integer) 1

获取有多少个元素

scard sname

结果: (integer) 0
由于我们把所有的元素都删除了, 所以返回结果为0

zset – Sorted sets类型

常见场景: 延时队列, 排行榜, 限流

添加数据: zadd 变量名 value1 key1 value2 key2……

zadd zname 10 y1 20 y2 30 y3 40 y4 50 y5

结果: (integer) 4

查看数据: zrange 变量名 索引起始位置 索引最后位置

zrange zname 0 -1

结果:

  1. “y1”
  2. “y2”
  3. “y3”
  4. “y4”
  5. “y5”

查看数据: zrangebyscore 变量名 起始值 最后值, zrangebyscore zname 0 100 代表查询zname变量里面值从0到100的所有元素

zrangebyscore zname 0 100

结果:

  1. “y1”
  2. “y2”
  3. “y3”
  4. “y4”
  5. “y5”

同理, 查找zname里面值在0到20区间的所有变量

zrangebyscore zname 0 20

结果:

  1. “y1”
  2. “y2”

查看分数, 也就是查看值, zscore 变量名 key

zscore zname y3

结果: “30”

zscore zname y3

结果: “20”

查找有多少个元素, zcard 变量名

zcard zname

结果:(integer) 5
删除数据:
zrem, zremrangebyrank 还有 zremrangebyscore
zrem: zrem 变量名 key

zrem zname y1

结果:(integer) 1
已经成功删除

利用索引(index)删除
zremrangebyrank zname 起始索引 最终索引, 比如 zremrangebyrank zname 0 2, 代表在zname变量中, 删除索引为0 到 2的元素

zremrangebyrank zname 0 2

结果: (integer) 3
删除了三个元素
分别是y1 y2 y3

我们在讲解下一个删除方法时, 先删除剩下的数据并重新添加以下数据

zrem zname y4
zadd zname 10 y1 20 y2 30 y3 40 y4 50 y5

利用分数(value)来删除, zremrangebyscore 变量名 起始值 最终值

zremrangebyscore zname 0 40

结果: (integer) 4
删除了4个元素

拓展

下面的知识只作为拓展, 如果感兴趣的话,可以自己上网去查

三个命令: flushdb, flushall 和 subscribe
flushdb
flushall

subscribe 110 订阅 频道号

publish 110 “hello world”

以上就是redis基本操作的所有内容了, 如果有哪里不懂的地方, 欢迎大家随时来提问题,在评论区讨论!!!
如果我有写错的地方, 望大家指正, 也可以联系我, 让我们一起努力, 继续不断的进步.
学习是个漫长的过程, 需要我们不断的去学习并掌握消化知识点, 有不懂或概念模糊不理解的情况下,一定要赶紧的解决问题, 否则问题只会越来越多, 漏洞也就越老越大.
人生路漫漫, 白鹭常相伴!!!

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Redis数据库是一个内存数据库,通过key-value键值对的方式进行数据存储。它的优点包括访问速度快、适用于缓存系统和存储大量活跃数据,可以提高网站的响应速度。\[1\]在Java中,有两个比较出名的连接Redis的驱动包,分别是Jedis和Redisson,我们可以使用Jedis来进行程序操作Redis。\[3\]以下是一些基本的Redis操作方法: - 使用`new Jedis(host, port)`创建Jedis对象,其中host是Redis服务器地址,port是Redis服务端口。 - 使用`set(key, value)`方法设置字符串类型的数据。 - 使用`get(key)`方法获取字符串类型的数据。 - 使用`hset(key, field, value)`方法设置哈希类型的数据。 - 使用`hget(key, field)`方法获取哈希类型的数据。 - 使用`lpush(key, values)`方法设置列表类型的数据。 - 使用`lpop(key)`方法从列表左侧弹出元素。 - 使用`rpop(key)`方法从列表右侧弹出元素。 - 使用`del(key)`方法删除指定的key。\[3\] #### 引用[.reference_title] - *1* [redis基本操作](https://blog.csdn.net/m0_50782114/article/details/128119748)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Redis基本使用!](https://blog.csdn.net/weixin_50769390/article/details/127134134)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值