Redis的使用--基本数据类型的操作命令和应用场景

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis的使用--基本数据类型的操作命令和应用场景

Redis的基本数据类型

最基本的数据类型strings

最基本也是最常用的数据类型就是String,对应的操作命令也比较简单的,有get/set/del等;它的对应的值可以是任何种类的字符串,最大保存长度512MB。基本命令的使用如下:

set name echo
get name
del name

set key 1
incr key
decr key
incrby key 20
decrby key 20
incrbyfloat key 2.1

set name ab
append name c
getrange name 1 5
strlen name
mget name1 name2 name3
mset name4 echo4 name5 echo5 name6 echo6

在这里插入图片描述

字符串中一个特殊操作setnx

setnx name echo
如果name存在就返回0存入不成功,如果name不存在就返回1存入成功。
基于该特性我们可以用它来实现分布式锁。但是注意:使用改特性也有一个缺点就是,可能会造成死锁。如果我们在使用过程当中,使用del key释放锁,有可能会释放锁失败,导致其他操作永远获取不到锁。当让我们也可以对ke设置过期时间,但是也会有相同的问题。解决方案:

数据类型list

对于该数据类型,我觉得用list一点也不贴切,应该叫做:有序的队列,才合适。毕竟list是无序的,而且也没有先后一说。基本操作命令如下:

lpush queue a
lpush queue b c
rpush queue d e
lpop queue
rpop queue
lindex queue 0
lrange queue 0 -1
ltrim queue 0 3
del queue
llen queue
brpop queue 50

在这里插入图片描述

list数据结构中brpop是一个高级操作

brpop queue 60 
如果queue队列中存在元素,直接弹出最右边的按个元素,如果不存在,轮询等待60s。超时,直接返回null。
该数据结构有一个明显的特点,那就是有序,不管是从左边存入还是右边存入,都能够有效的实现队列的进出。我们可以看到最后一个条命令,它其实是redis提供的一个高级操作,利用list队列的特性,实现了阻塞式访问,我们可以使用该功能做一个简单的发布订阅功能。如果存入数据作为发布消息,使用brpop阻塞式访问来订阅。

数据类型set

Redis中Set 是 String 类型的无序集合。该集合有set集合的属性,元素唯一, 所以对应的redis set数据成员是唯一的,这就意味着集合中不能出现重复的数据。

sadd myset a b c d e f g
smembers myset
scard myset
srandmember key
spop myset
srem myset d e f
sismember myset a
sdiff set1 set2
sinter set1 set2
sunion set1 set2

在这里插入图片描述

在set中,元素都不是重复的,所以我们可以用它来记录一些唯一的值。这几个基本的命令里面我们可以看到有一个spop myset 随机弹出一个元素,利用set的唯一性,和随机弹出元素的特性,我们可以使用set集合实现一个抽奖活动。将所有人的id存入set集合中,然后使用spop随机弹出元素,弹出的元素id就是中奖人。

Redis的zset -- 有序集合

zset和Set类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它和set集合的区别只去在于zset是有序的,set是无序的。而且set的存储和zset的存储不一样

zadd myzset 10 java 20 php 30 ruby 40 cpp 50 python
zrange myzset 0 -1 withscores
zrevrange myzset 0 -1 withscores
zrangebyscore myzset 20 30
zrem myzset php cpp
zcard myzset
zincrby myzset 5 python
zcount myzset 20 60
zrank myzset java
zscore myzset java

在这里插入图片描述

zset是一个有序的集合,它的排序是根据score来进行的,所以我们可以使用该特性来实现一个最热文章的功能,当文章的热度上涨之后,我们对文章对应score来进行递增即可。

Redis的数据类型Hash

Redis的哈希数据类型存储的是一个string类型的field和value的映射表,hash适合存放对象

hset h1 f 6
hmset h1 a 1 b 2 c 3 d 4
hget h1 a
hmget h1 a b c d
hkeys h1
hvals h1
hgetall h1
hexists h1 f
hdel h1 f
hlen h1

在这里插入图片描述

hash的操作和我们java开发中操作map很类似,比如添加一个key为h1、field为f、value为6的hash值,在java中就相当于创建一个名字为h1的map,存入key为f,value为6的键值对。该数据结构的特点很适合我们在业务中存放对象,比如使用他来实现购物车。将hash设计成为后面这种模式即可:key:用户 id;field:商品 id;value:商品数量。商品在购物车中的数据量使用如下命令来实现即可
对我们的hash值来进行加1
hincrby h1 d 1

对我们的hash值来进行减1
hincrby h1 d -1
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
9天前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
23 1
|
1月前
|
NoSQL Java Redis
redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
这篇文章介绍了Redis的基本命令,并展示了如何使用Netty框架直接与Redis服务器进行通信,包括设置Netty客户端、编写处理程序以及初始化Channel的完整示例代码。
44 1
redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
|
29天前
|
存储 消息中间件 NoSQL
Redis 数据类型
10月更文挑战第15天
36 1
|
12天前
|
存储 NoSQL Java
Redis命令:列表模糊删除详解
通过本文的介绍,我们详细探讨了如何在Redis中实现列表的模糊删除。虽然Redis没有直接提供模糊删除命令,但可以通过组合使用 `LRANGE`和 `LREM`命令,并在客户端代码中进行模糊匹配,来实现这一功能。希望本文能帮助你在实际应用中更有效地操作Redis列表。
25 0
|
1月前
|
缓存 NoSQL 测试技术
Redis如何解决频繁的命令往返造成的性能瓶颈!
Redis如何解决频繁的命令往返造成的性能瓶颈!
|
1月前
|
缓存 NoSQL Redis
Redis命令:列表模糊删除详解
Redis命令:列表模糊删除详解
46 3
|
1月前
|
存储 消息中间件 NoSQL
【redis】redis的特性和主要应用场景
【redis】redis的特性和主要应用场景
104 1
|
29天前
|
NoSQL Redis 数据安全/隐私保护
Redis 命令
10月更文挑战第15天
25 0
|
缓存 NoSQL 数据库
【redis】redis应用场景,缓存的各种问题
redis有一个重要的应用领域——缓存 引用来自网友的图解释缓存在架构中的位置 默认情况下,我们的服务架构如下图,客户端请求service,然后service去读取mysql数据库 问题存在于,数据库性能不够用,数据库是整个架构中最重要的一个环节,它在高并发,高写入频次的时候非常容易崩掉,这是一般的数据库本身的特性所决定的,它们的架构模式注定了不可以承受较大的并发量,所以就有了缓存: service与高速的缓存进行交互,如果缓存中有数据直接返回客户端,如果没有才会从MySql中去查询。
17390 0
|
1月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
74 6