redis学习笔记(五)

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: redis学习笔记(五)

hash(哈希)

hset key field value

hget key field

hgetall info

hmget key field1 field2 …

hincrby key field number

专门用于结构化的数据信息。对应的就是map/结构体

结构:

键key:{
    域field: 值value,
    域field: 值value,
    域field: 值value,
}

(1)设置指定键的属性/域

设置指定键的单个属性

hset key field value

设置键 user_1的属性namexiaoming

127.0.0.1:6379> hset user_1 name xiaoming   # user_1没有会自动创建
(integer) 1
127.0.0.1:6379> hset user_1 name xiaohei    # user_1中重复的属性会被修改
(integer) 0
127.0.0.1:6379> hset user_1 age 16          # user_1中不存在的属性会被新增
(integer) 1
127.0.0.1:6379> hset user:1 name xiaohui    # user:1会在redis界面操作中以:作为目录分隔符
(integer) 1
127.0.0.1:6379> hset user:1 age 15
(integer) 1
127.0.0.1:6379> hset user:2 name xiaohong age 16  # 一次性添加或修改多个属性

(2)获取指定键的域/属性的值

获取指定键所有的域/属性

hkeys key

获取键user的所有域/属性

127.0.0.1:6379> hkeys user:2
1) "name"
2) "age"
127.0.0.1:6379> hkeys user:3
1) "name"
2) "age"
3) "sex"

获取指定键的单个域/属性的值

hget key field

获取键user:3属性name的值

127.0.0.1:6379> hget user:3 name
"xiaohong"

获取指定键的多个域/属性的值

hmget key field1 field2 ...

获取键user:2属性nameage的值

127.0.0.1:6379> hmget user:2 name age
1) "xiaohong"
2) "16"

获取指定键的所有值

hvals key

获取指定键的所有域值对

127.0.0.1:6379> hvals user:3
1) "xiaohong"
2) "17"
3) "1"

(3)获取hash的所有域值对

127.0.0.1:6379> hset user:1 name xiaoming age 16 sex 1
(integer) 3
127.0.0.1:6379> hgetall user:1
1) "name"
2) "xiaoming"
3) "age"
4) "16"
5) "sex"
6) "1"

(4)删除指定键的域/属性

hdel key field1 field2 ...

删除键user:3的属性sex/age/name,当键中的hash数据没有任何属性,则当前键会被redis删除

hdel user:3 sex age name

(5)判断指定属性/域是否存在于当前键对应的hash中

hexists   key  field

判断user:2中是否存在age属性

127.0.0.1:6379> hexists user:3 age
(integer) 0
127.0.0.1:6379> hexists user:2 age
(integer) 1
127.0.0.1:6379>

(6)属性值自增自减

hincrby key field number

给user:2的age属性在原值基础上+/-10,然后在age现有值的基础上-2

# 按指定数值自增
127.0.0.1:6379> hincrby user:2 age 10
(integer) 77
127.0.0.1:6379> hincrby user:2 age 10
(integer) 87
# 按指定数值自减
127.0.0.1:6379> hincrby user:2 age -10
(integer) 77
127.0.0.1:6379> hincrby user:2 age -10
127.0.0.1:6379> hset info name rain
(integer) 1
127.0.0.1:6379> hget info name
"rain"
127.0.0.1:6379> hset info name lz age 21
(integer) 0
127.0.0.1:6379> hget info name
"lz"
127.0.0.1:6379> hset info name root age 25
(integer) 0
127.0.0.1:6379> hget info name
"root"
127.0.0.1:6379> hgetall info
1) "name"
2) "root"
3) "age"
4) "25"
127.0.0.1:6379> hmget info name age
1) "root"
2) "25"
127.0.0.1:6379> hdel info age
(integer) 1
127.0.0.1:6379> hgetall info
1) "name"
2) "root"
127.0.0.1:6379> hexists info name
(integer) 1
127.0.0.1:6379> hexists info age
(integer) 0
127.0.0.1:6379> hset info age 21
(integer) 1
127.0.0.1:6379> hgetall info
1) "name"
2) "root"
3) "age"
4) "21"
127.0.0.1:6379> hincrby info age 5
(integer) 26
127.0.0.1:6379> hget info age
"26"
127.0.0.1:6379>
127.0.0.1:6379> hget info age
"26"
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
127.0.0.1:6379> hvals info
1) "root"
2) "26"
127.0.0.1:6379>


相关实践学习
基于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
相关文章
|
29天前
|
存储 缓存 NoSQL
redis学习笔记
Redis是一款由C语言编写的内存中的键值对数据库,包含多种数据结构如字符串、散列、列表、集合、有序集合等。它支持复制、LUA脚本、LRU策略、事务和持久化。Redis官网提供详细文档,可用于分布式缓存、防止缓存击穿、分布式锁、消息队列等场景。安装Redis 7.0.15版,需下载、配置环境变量、修改配置文件以设置守护进程、关闭保护模式和密码。Redis基础命令包括键操作如DEL、EXISTS、EXPIRE等,数据类型包括字符串和哈希等,如HSET用于设置哈希表字段值,HGET用于获取字段值。
21 0
|
1月前
|
NoSQL Redis 数据库
Redis学习笔记
Redis学习笔记
|
10月前
|
NoSQL Redis Python
redis学习笔记(九)
redis学习笔记(九)
|
10月前
|
NoSQL Java Redis
redis学习笔记(二)
redis学习笔记(二)
|
10月前
|
NoSQL Java Redis
redis学习笔记(八)
redis学习笔记(八)
|
10月前
|
NoSQL 搜索推荐 Redis
redis学习笔记(六)
redis学习笔记(六)
|
10月前
|
NoSQL Redis
redis学习笔记(七)
redis学习笔记(七)
|
10月前
|
SQL NoSQL 关系型数据库
redis学习笔记(一)
redis学习笔记(一)
|
10月前
|
NoSQL Redis 索引
redis学习笔记(四)
redis学习笔记(四)
|
10月前
|
NoSQL Redis 数据库
redis学习笔记(三)
redis学习笔记(三)