Redis键值存储数据库

在平台上,我们将课程所有需要的环境都配置好,快速学习需要的技术

image.png

环境要求

一台预装好Redis的服务器,本地自行部署也可以
以下均以公网服务器为例,服务器配置如下

image.png

一、AnotherRedisDesktop客户端

1.连接数据库

新建连接

image.png

2.选择实例库

选择实例库

image.png

3.增删改查String数据

一、增

场景一:手机发送验证码
key=sms:code:13800138000
value=123456
1.新建String数据(text)

image.png

image.png

2.新建String数据(Json)
场景二:存储商品信息
key=product:hot:1001
value={\"id\":1001,\"name\":\"iPhone14\",\"price\":6999}

image.png

访问网站格式化json数据
https://www.bejson.com/

image.png

填写数据

image.png

特点:存储类型:字符串、整数、浮点数、二进制数据(如图片序列化) 最大容量:512MB(比Memcached的1MB大很多)

二、查

1.查看所有数据

image.png

2.查String数据

image.png

三、改

image.png

四、删(自动删除)

1.设置过期时间

image.png

2.确定修改后开始计时

image.png

3.自动删除

image.png

4.刷新后数据消失

image.png

4.增删改查List数据

一、增

场景:订单队列
key=task:queue:urgent
value1=process_order_12345
value2=process_order_12346

image.png

1.删除默认数据
在 Another Redis Desktop Manager (ARDM) 中,当你新建一个 Redis List 时,默认会包含一个值为 "New member" 的成员,这是该工具的默认行为,主要是为了方便用户快速开始操作。

image.png

2.新增数据
属性
keytask:queue:urgent
value1process_order_12345

image.png

image.png

属性
keytask:queue:urgent
value2process_order_12346

image.png

image.png

特点:一个key对应多个有序value( 顺序固定 )(可以重复)(可以双端操作)

二、查数据

1.查所有数据

image.png

2.查List数据

image.png

三、改

image.png

四、删除(自动删除)

1.设置过期时间

image.png

2.确定修改后开始计时

image.png

3.自动删除

image.png

4.刷新后数据消失

image.png

5.增删改查Hash数据

一、增

场景:添加人物信息
key=user:profile:1001
key1=name    value1=张三
key2=age     value2=30
key3=email   value3=zhangsan@example.com
1.尝试切换数据库

image.png

2.新建Hash列表

image.png

3.删除默认数据

image.png

4.新增数据

image.png

属性
key1name
value1张三

image.png

属性
key2age
value230

image.png

属性
key3email
value3zhangsan@example.com

image.png

image.png

特点:一个key对应多个字段-value对象(无序)(字段唯一)(适合存储对象)

二、查数据

1.查看所有数据

image.png

2.查Hash数据

image.png

只搜索1001对应的key有三个,查出来多个数据,所以要搜索完整的key保证数据准确性,这里体现了前缀的重要性

image.png

三、改

image.png

四、删(自动删除)

1.设置过期时间

image.png

2.自动删除

image.png

6.增删改查Set数据

一、增

场景:用户标签管理
key ="user:tags:1001";
value1 = "vip"
value2 = "active"
value3 = "new"
1.新建Set集合

image.png

2.删除默认数据

image.png

3.新增数据
属性
value1vip

image.png

属性
value2active

image.png

属性
value3new

image.png

image.png

特点:一个key对应多个唯一value (无序)(不允许重复)(可以求交集/并集)

二、查数据

1.查看所有数据

image.png

2.查Set数据

image.png

三、改Set数据

image.png

四、删(自动删除)

1.设置过期时间

image.png

2.自动删除

image.png

7.增删改查SortedSet数据

一、增

场景:商品排行榜
key=product:ranking    
value=product:1001
score=4.8  
         
key=product:ranking     
value=product:1002    
score=4.5  
         
key=product:ranking     
value=product:1003     
score=4.7  
1.新建Sorted Set集合

image.png

2.删除默认数据

image.png

3.新增数据
属性
keyproduct:ranking
valueproduct:1001
score4.8

image.png

属性
keyproduct:ranking
valueproduct:1002
score4.5

image.png

属性
keyproduct:ranking
valueproduct:1003
score4.7

image.png

image.png

特点:每个value附带排序分数score (按分数排序)(不允许重复)(可以范围查询)

二、查数据

1.查看所有数据

image.png

2.查Sorted Set数据

image.png

三、改

image.png

四、删(自动删除)

1.设置过期时间

image.png

2.自动删除

image.png

8.手工删除

手动删除

image.png

image.png

二、navicat客户端

1.连接navicat

连接navicat

image.png

image.png

2.增删改查String数据

String类型

1.增
SET sms:code:13800138000 123456

image.png

2.查
GET sms:code:13800138000

image.png

3. 改

改(直接 SET 新值)

SET sms:code:13800138000 654321

image.png

4.删
DEL sms:code:13800138000

image.png

5.再查
GET sms:code:13800138000

image.png

3.增删改查List数据

List类型
# 增(从左压入)
LPUSH task:queue:urgent process_order_12345
LPUSH task:queue:urgent process_order_12346

# 查(获取全部列表)
LRANGE task:queue:urgent 0 -1

# 改(修改指定下标的值)
LSET task:queue:urgent 0 process_order_99999

# 删(删除最右边的一个任务)
RPOP task:queue:urgent

# 删除整个列表
DEL task:queue:urgent
1.增

增(从左压入)

LPUSH task:queue:urgent process_order_12345
LPUSH task:queue:urgent process_order_12346

image.png

2.查

查(获取全部列表)

LRANGE task:queue:urgent 0 -1

image.png

3.改(先查再改)

改(修改指定下标的值)

LSET task:queue:urgent 0 process_order_99999

image.png

image.png

4.删
# 删(删除最右边的一个任务)
RPOP task:queue:urgent

image.png

5.再查
# 查(获取全部列表)
LRANGE task:queue:urgent 0 -1

image.png

4.增删改查Hash数据

Hash类型

# 增 / 改(HSET)
HSET user:profile:1001 name "张三"
HSET user:profile:1001 age 30
HSET user:profile:1001 email "zhangsan@example.com"

# 查(获取所有字段)
HGETALL user:profile:1001

# 查单个字段
HGET user:profile:1001 name

# 改(继续 HSET)
HSET user:profile:1001 name "李四"

# 删除一个字段
HDEL user:profile:1001 email

# 删除整个 hash
DEL user:profile:1001
1.增

增 / 改(HSET)

HSET user:profile:1001 name "张三"
HSET user:profile:1001 age 30
HSET user:profile:1001 email "zhangsan@example.com"

image.png

2.查(查所有、查单个字段)

查(获取所有字段)

HGETALL user:profile:1001

image.png

查单个字段

HGET user:profile:1001 name

image.png

3.改(先改再查)

改(继续 HSET)

HSET user:profile:1001 name "李四"

image.png

查(获取所有字段)

HGETALL user:profile:1001

image.png

4.删

删除一个字段

HDEL user:profile:1001 email

image.png

5.再查

查(获取所有字段)

HGETALL user:profile:1001

image.png

5.增删改查Set数据

Set类型

# 增
SADD user:tags:1001 vip active new

# 查(所有元素)
SMEMBERS user:tags:1001

# 改(先删再加)
SREM user:tags:1001 new
SADD user:tags:1001 loyal

# 删(删除整个 Set)
DEL user:tags:1001
1.增
SADD user:tags:1001 vip active new

image.png

2.查

查(所有元素)

SMEMBERS user:tags:1001

image.png

3.改(先改再查)

先改(先删再加)

SREM user:tags:1001 new
SADD user:tags:1001 loyal

image.png

再查

SMEMBERS user:tags:1001

image.png

4.删(先删再查)

删(删除整个 Set)

DEL user:tags:1001

image.png

查(所有元素)

SMEMBERS user:tags:1001

image.png

6.增删改查SortedSet数据

Sorted Set类型

# 增(ZADD 分数 成员)
ZADD product:ranking 4.8 product:1001
ZADD product:ranking 4.5 product:1002
ZADD product:ranking 4.7 product:1003

# 查(按分数降序)
ZREVRANGE product:ranking 0 -1 WITHSCORES

# 改(修改 product:1002 的分数为 4.9)
ZADD product:ranking 4.9 product:1002

# 删除某个成员
ZREM product:ranking product:1001

# 删除整个 ZSet
DEL product:ranking
1.增

增(ZADD 分数 成员)

ZADD product:ranking 4.8 product:1001
ZADD product:ranking 4.5 product:1002
ZADD product:ranking 4.7 product:1003

image.png

2.查

查(按分数降序)

ZREVRANGE product:ranking 0 -1 WITHSCORES

image.png

3.改

改(修改 product:1002 的分数为 4.9)

ZADD product:ranking 4.9 product:1002

image.png

4.删(先删再查)

删除某个成员

ZREM product:ranking product:1001

查(按分数降序)

ZREVRANGE product:ranking 0 -1 WITHSCORES

image.png

删除整个 Set

DEL product:ranking

查(按分数降序)

ZREVRANGE product:ranking 0 -1 WITHSCORES

image.png

三、命令行客户端

1.命令行客户端连接redis

代码示例

代码块分开

docker ps  //展示容器

docker ps | grep redis  //筛选出redis

docker exec -it 67ad   //67ad改成容器id前四位
redis-cli -a com.guoyasoft
或者
docker exec -it 67ad redis-cli -a com.guoyasoft //67ad改成容器id前四位
操作示例
docker ps  //展示容器

image.png

docker ps | grep redis  //筛选出redis

image.png

docker exec -it 24ae67d26eff redis-cli -a com.guoyasoft //24ae67d26eff改成容器id前四位

image.png

2.增删改查String数据

原Java语句

 String codeKey = "sms:code:13800138000";
 String verificationCode = "123456";

代码示例

SET sms:code:13800138000 123456     增
GET sms:code:13800138000            查
SET sms:code:13800138000 654321     改
DEL sms:code:13800138000            删

操作示例

1. 增
SET sms:code:13800138000 123456

GET sms:code:13800138000

image.png

2.改
SET sms:code:13800138000 654321
GET sms:code:13800138000

image.png

3.删
DEL sms:code:13800138000
GET sms:code:13800138000

image.png

3.增删改查List数据

原Java语句

String taskQueueKey = "task:queue:urgent";
String newTask1 = "process_order_12345";
String newTask2 = "process_order_12346";

代码示例

# 增(从左侧压入队列)
LPUSH task:queue:urgent process_order_12345
LPUSH task:queue:urgent process_order_12346

# 查(获取整个列表)
LRANGE task:queue:urgent 0 -1

# 改(列表不能直接改,用 LSET 改指定下标)
LSET task:queue:urgent 0 process_order_00000

# 删(从右侧弹出一个任务,模拟处理)
RPOP task:queue:urgent
# 删整个队列
DEL task:queue:urgent

操作示例

1. 增

增(从左侧压入队列)

LPUSH task:queue:urgent process_order_12345
LPUSH task:queue:urgent process_order_12346
LRANGE task:queue:urgent 0 -1

image.png

2.改

改(列表不能直接改,用 LSET 改指定下标)

LSET task:queue:urgent 0 process_order_00000

查(获取整个列表)

LRANGE task:queue:urgent 0 -1

image.png

3.删

删(从右侧弹出一个任务,模拟处理)

RPOP task:queue:urgent

查(获取整个列表)

LRANGE task:queue:urgent 0 -1

删整个队列

DEL task:queue:urgent

查(获取整个列表)

LRANGE task:queue:urgent 0 -1

image.png

4.增删改查Hash数据

原Java语句


String userKey = "user:profile:1001";
put(userKey, "name", "张三");
put(userKey, "age", 30);
put(userKey, "email", "zhangsan@example.com");

代码示例

# 增(或改)字段
HSET user:profile:1001 name "张三"
HSET user:profile:1001 age 30
HSET user:profile:1001 email "zhangsan@example.com"

# 查(所有字段)
HGETALL user:profile:1001

# 查单个字段
HGET user:profile:1001 email

# 改(直接用 HSET)
HSET user:profile:1001 name "李四"

# 删字段
HDEL user:profile:1001 email

操作示例

1. 增

增(或改)字段

HSET user:profile:1001 name "张三"
HSET user:profile:1001 age 30
HSET user:profile:1001 email "zhangsan@example.com"

查(所有字段)

HGETALL user:profile:1001

image.png

2.查

查单个字段

HGET user:profile:1001 email

image.png

3.改

改(直接用 HSET)

HSET user:profile:1001 age 50

查单个字段

HGET user:profile:1001 age

image.png

4.删

删字段

HDEL user:profile:1001 email

查单个字段

HGET user:profile:1001 email

image.png

5.增删改查Set数据

原Java语句

String userTagsKey = "user:tags:1001";
add(userTagsKey, "vip", "active", "new");

代码示例

# 增(添加多个元素)
SADD user:tags:1001 vip active new

# 查(获取所有标签)
SMEMBERS user:tags:1001

# 改(先删后加)
SREM user:tags:1001 new
SADD user:tags:1001 loyal

# 删(删除整个 set)
DEL user:tags:1001

操作示例

1. 增

增(添加多个元素)

SADD user:tags:1001 vip active new

查(获取所有标签)

SMEMBERS user:tags:1001

image.png

2.改

改(先删后加)

SREM user:tags:1001 new
SADD user:tags:1001 loyal

查(获取所有标签)

SMEMBERS user:tags:1001

image.png

3.删

删(删除整个 set)

DEL user:tags:1001

查(获取所有标签)

SMEMBERS user:tags:1001

image.png

6.增删改查SortedSet数据

原Java语句

String rankingKey = "product:ranking";
add(rankingKey, "product:1001", 4.8);
add(rankingKey, "product:1002", 4.5);
add(rankingKey, "product:1003", 4.7);

代码示例

# 增(或更新分数)
ZADD product:ranking 4.8 product:1001
ZADD product:ranking 4.5 product:1002
ZADD product:ranking 4.7 product:1003

# 查(按分数降序排名)
ZREVRANGE product:ranking 0 -1 WITHSCORES

# 查某个成员的排名(从 0 开始)
ZREVRANK product:ranking product:1002

# 改(更新某个商品分数)
ZADD product:ranking 4.9 product:1002

# 删
ZREM product:ranking product:1001

操作示例

1. 增

增(或更新分数)

ZADD product:ranking 4.8 product:1001
ZADD product:ranking 4.5 product:1002
ZADD product:ranking 4.7 product:1003

查(按分数降序排名)

ZREVRANGE product:ranking 0 -1 WITHSCORES

image.png

2.查排名

查某个成员的排名(从 0 开始)

ZREVRANK product:ranking product:1002

image.png

3.改

改(更新某个商品分数)

ZADD product:ranking 4.9 product:1002

查(按分数降序排名)

ZREVRANGE product:ranking 0 -1 WITHSCORES

image.png

4.删

ZREM product:ranking product:1001

查(按分数降序排名)

ZREVRANGE product:ranking 0 -1 WITHSCORES

image.png

以上为全部内容
有任何问题欢迎联系!!!添加时请备注来意,谢谢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值