Redis学习笔记之字符串和哈希命令

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis学习笔记之字符串和哈希命令

字符串

字符串类型是Redis最基础的数据结构。首先键都是字符串类型,而且其他几种数据结构都是在字符串类型基础上构建的,字符串类型的值可以是字符串(简单的字符串、复杂的字符串(JSON、XML))、数字,甚至是二进制(图片、音频、视频),但是值最大不能超过512MB。

1.设置值

set key value [EX seconds|PX milliseconds] [NX|XX] [KEEPTTL]
set命令有几个选项:

ex seconds:为键设置秒级别过期时间。
px milliseconds:为键设置毫秒级别过期时间。
nx:键必须不存在,才可以设置成功,用于添加。
xx:于nx相反,键必须存在,才可以设置成功,用于更新。
keepttl:取消键的过期时间。
除了set选项,Redis还提供了setex和setnx两个命令:

setex key seconds value
setnx key value

它们的作用和ex和nx选项是一样的。

2.获取值

get key

3.批量设置值

mset key value [key value ...]

4.批量获取值

mget key [key ...]

5.计数

incr key

incr命令用于对值做自增操作,返回结果分为三种情况:
值不是整数,返回错误。
值是整数,返回自增后的结果。
键不存在,按照值为0自增,返回结构为1。
除了incr自增命令,Redis还提供了decr自减、incrby自增指定数字、decrby自减指定数字、incrbyfloat自增浮点数命令:

decr key
incrby key increment
decrby key decrement
incrbyfloat key increment

哈希

在Redis中,哈希类型是指键值本身又是一个键值对结构,形如value={{field1,value1},…{fieldN,valueN}}。哈希类型中的映射关系叫做field-value,注意这里的value是指field对应的值,不是键对应的值。

1.设置值

hset key field value

下面为user:1添加一对field-value:

192.168.211.131:7002> hset user:1 name tom
-> Redirected to slot [10778] located at 192.168.211.131:7004
(integer) 1

hset也可以批量设置:

192.168.211.131:7004> hset user:1 dept dba sal 1000
(integer) 2

此外Redis提供了hsetnx命令,它的作用和setnx命令一样,只不过作用域由键变为field。
下面为user:1添加新的一对filed-value

192.168.211.131:7004> hsetnx user:1 mgr jim
(integer) 1

2.获取值

hget key filed

下面操作获取user:1的name域对应的值:

192.168.211.131:7004> hget user:1 name
"tom"

3.删除field

hdel key field [field ...]

hdel会删除一个或多个field,返回结果为成功删除field的个数,例如:

192.168.211.131:7004> hdel user:1 mgr
(integer) 1

4.计算field个数

hlen key

获取user:1的field个数:

192.168.211.131:7004> hlen user:1
(integer) 3

5.批量设置或获取field-value

hmset key field value [field value ...]
hmget key field [field ...]

hmset和hmget分别是批量设置和获取field-value,例如:

192.168.211.131:7004> hmset user:2 name jim dept dba sal 5000 mgr null
OK
192.168.211.131:7004> hmget user:2 name dept sal mgr
1) "jim"
2) "dba"
3) "5000"
4) "null"

6.判断field是否存在

192.168.211.131:7004> hexists key field

user:1包含name域,所以返回结果为1,举例:

192.168.211.131:7004> hexists user:1 name
(integer) 1

7.获取所有field

hkeys key

hkyes命令应该叫hkeys field更为恰当,获取user:1的所有filed:

192.168.211.131:7004> hkeys user:1
1) "name"
2) "dept"
3) "sal

8.获取所有value

hvals key

获取user:1的所有value:

192.168.211.131:7004> hvals user:1
1) "tom"
2) "dba"
3) "1000"

9.获取所有的filed-value

hgetall key

获取user:1所有的field-value:

192.168.211.131:7003> hgetall user:1
-> Redirected to slot [10778] located at 192.168.211.131:7004
1) "name"
2) "tom"
3) "dept"
4) "dba"
5) "sal"
6) "1000"

10.hincrby hincrbyfloat

hincrby key field increment
hincrbyfloat key field increment

hincrby和hincrbyfloat,就像incrby和incrbyfloat命令一样,但是他们的作用域是field。

11.计算value的字符串长度

hstrlen key field

例如user:1 name的value是tom,那么hstrlen的返回结果是3:

192.168.211.131:7004> hstrlen user:1 name
(integer) 3

相关实践学习
基于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
相关文章
|
25天前
|
存储 缓存 NoSQL
redis数据结构-字符串
redis数据结构-字符串
28 1
|
30天前
|
缓存 NoSQL 关系型数据库
Redis学习总结
Redis学习总结
31 1
|
21天前
|
C# 开发者 UED
WPF开发者必备秘籍:深度解析文件对话框使用技巧,打开与保存文件原来如此简单!
【8月更文挑战第31天】在WPF应用开发中,文件操作是常见需求。本文详细介绍了如何利用`Microsoft.Win32`命名空间下的`OpenFileDialog`和`SaveFileDialog`类来正确实现文件打开与保存功能。通过示例代码展示了如何设置文件过滤器、初始目录等属性,并使用对话框进行文件读写操作。正确使用文件对话框能显著提升用户体验,使应用更友好易用。
40 0
|
28天前
|
SQL 缓存 NoSQL
【Azure Redis 缓存】使用Azure Redis服务时候,如突然遇见异常,遇见命令Timeout performing SET xxxxxx等情况,如何第一时间查看是否有Failover存在呢?
【Azure Redis 缓存】使用Azure Redis服务时候,如突然遇见异常,遇见命令Timeout performing SET xxxxxx等情况,如何第一时间查看是否有Failover存在呢?
|
28天前
|
缓存 监控 NoSQL
【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤
【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤
|
28天前
|
存储 NoSQL Redis
【Redis 探秘】SDS 简单动态字符串:揭秘 Redis 高效字符串处理的秘密武器!
【8月更文挑战第24天】Redis采用的简单动态字符串(SDS)是一种专为优化内存存储和字符串操作而设计的数据结构。相较于C语言的标准字符串,SDS改进了字符串长度计算、内存重分配及字符串比较等问题。其特性包括预分配冗余空间减少未来的内存重分配、显式存储长度以加快获取速度等。这些改进使Redis能更高效地管理字符串数据。例如,在Redis中,SDS被广泛应用于键值对的存储,显著提升了字符串操作的性能。了解SDS不仅对于深入理解Redis的工作原理至关重要,也是开发者技能树中的重要一环。
26 0
|
28天前
|
存储 JSON NoSQL
揭秘Redis字符串String的隐藏技能!从基础到进阶,让你的数据存储操作秒变高大上!
【8月更文挑战第24天】Redis中的字符串类型作为其基石,不仅能够存储从简单文本到复杂格式如JSON的各种数据,还能通过多样化的命令实现包括但不限于自增自减、设置过期时间等高级功能,极大提升了其实用性和灵活性。例如,使用`SET`命令可添加或更新键值对,`GET`获取值,`DEL`删除键;同时,`INCR`和`DECR`支持对整数值的原子性增减操作,非常适合实现计数器等功能;通过`EXPIRE`命令设置过期时间,则适用于需要限时存储的应用场景。尽管名为“字符串”,但实际上还可存储图片、音频文件的Base64编码等形式的数据,为开发者提供了强大而灵活的工具。
29 0
|
29天前
|
缓存 NoSQL 测试技术
【Azure Redis 缓存 Azure Cache For Redis】使用Redis自带redis-benchmark.exe命令测试Azure Redis的性能
【Azure Redis 缓存 Azure Cache For Redis】使用Redis自带redis-benchmark.exe命令测试Azure Redis的性能
|
1月前
|
缓存 NoSQL Redis
Redis AOF重写问题之正常响应用户命令如何解决
Redis AOF重写问题之正常响应用户命令如何解决
|
存储 NoSQL Redis
Redis学习一(基础入门).
一、前言     Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、key-Value 的数据库、并提供多种语言的API。     通常,Redis 将数据存储于内存中,或被配置为使用虚拟内存。
2509 0