一分钟带你了解Redis数据类型-Hash
Redis的hash哈希存储类型,类似于是java中的map存储结构,适合用来存储对象,每个哈希最多可以存储4294967295(2^32-1)个字段值对,具体数量实际上也受Redis部署的虚拟机上的总内存的限制。
理解了它的数据结构后,接下来带你开启命令操作之旅。
三. hset、hget
hset、hget主要用来设置和获取单条数据,格式说明如下:
#贴心测试如下:
#设置值 hset key field value
192.168.65.15:6379> hset u1 name zs
(integer) 1
#获取值 hget key field
192.168.65.15:6379> hget u1 name
"zs"
#获取值:如果key不存返回nil
192.168.65.15:6379> hget u2 name
(nil)
#获取值:如果field不存返回nil
192.168.65.15:6379> hget u1 name1
(nil)
hmset、hmget
上述一条一条地增加数据有点繁琐,为此,Redis准备了多条数据的操作,格式如下:
#贴心测试如下:
#批量设置值
192.168.65.15:6379> hmset u1 name zs age 22 sex boy
OK
#批量获取值,按field顺序显示
192.168.65.15:6379> hmget u1 name age sex
1) "zs"
2) "22"
3) "boy"
#如果key不存在,则返回nil
192.168.65.15:6379> hmget u2 name
1) (nil)
#如果field不存在,则返回nil
192.168.65.15:6379> hmget u1 name name1
1) "zs"
2) (nil)
hincrby、hsetnx
如果value是数值类型,我们可以用hincrby来增加大小;在添加时如果key-field不存在,才实现添加,可以用hsetnx命令。具体格式如下:
#贴心测试如下:
#查看age原来的值
192.168.65.15:6379> hget u1 age
"22"
#hincrby给age增加5
192.168.65.15:6379> hincrby u1 age 5
(integer) 27
#查看增加后的结果22+5=27
192.168.65.15:6379> hget u1 age
"27"
#hsetnx设置如果field存在,则不添加
192.168.65.15:6379> hsetnx u1 age 22
(integer) 0
#查看age还是27,没有变化
192.168.65.15:6379> hget u1 age
"27"
#hsetnx设置如果field不存在,添加
192.168.65.15:6379> hsetnx u1 age1 22
(integer) 1
#查看age1是22
192.168.65.15:6379> hget u1 age1
"22"
hexists、hgetall、hkeys、hvals、hlen
在查询时,有时我们需要知道key是否存在?存在的话有多少个field?如何显示所有的内容?如何显示所有的field或者value?为解决这些问题,伟哥帮你收集以下命令来解决:
#贴心测试如下:
#检查field是否存在
192.168.65.15:6379> hexists u1 age
(integer) 1
#如果key不存在,返回0
192.168.65.15:6379> hexists u2 age
(integer) 0
#如果field不存在,返回0
192.168.65.15:6379> hexists u1 age2
(integer) 0
#获取u1结构中的全部field和value
192.168.65.15:6379> hgetall u1
1) "name"
2) "zs"
3) "age"
4) "27"
5) "sex"
6) "boy"
7) "age1"
8) "22"
#获取u1结构中的全部field
192.168.65.15:6379> hkeys u1
1) "name"
2) "age"
3) "sex"
4) "age1"
#获取u1结构中的全部value
192.168.65.15:6379> hvals u1
1) "zs"
2) "27"
3) "boy"
4) "22"
#获取u1结构中field的数量
192.168.65.15:6379> hlen u1
(integer) 4
hdel
我们一般用的删除单词是remove 和delete,这里删除用的是hdel,h表示hashes,del表示delete,具体如下:
#贴心测试如下:
#查看u1的数据
192.168.65.15:6379> hgetall u1
1) "name"
2) "zs"
3) "age"
4) "27"
5) "sex"
6) "boy"
7) "age1"
8) "22"
#删除u1中 age1和 sex的数据
192.168.65.15:6379> hdel u1 age1 sex
(integer) 2
#查看删除结果
192.168.65.15:6379> hgetall u1
1) "name"
2) "zs"
3) "age"
4) "27"
猜你喜欢LIKE
相关推荐HOT
更多>>servlet底层原理是什么?
1、ServletAPI核心类与接口2、Servlet类处理请求的流程创建servlet类的步骤:创建一个命名为TestServlet继承javax.servlet.http.HttpServlet类详情>>
2023-05-30 10:41:22多线程的优势与劣势分别是什么?
多线程是指在同一个程序中,同时运行多个线程,每个线程都可以独立执行不同的任务,相互之间不会干扰。多线程的优势和劣势如下:优势:提高程序...详情>>
2023-05-30 10:32:12设计模式之生产者与消费者的代码实现
本文主要讲述生产者和消费者模式,文中会使用通俗易懂的案例,使你更好地学习本章知识点并理解原理,做到有道无术。什么是生产者和消费者模式生...详情>>
2023-05-30 10:25:46从零开始学Java之interface接口
一.接口简介简介Java中的接口(interface)类似于是一种特殊的抽象类,它也是众多抽象方法的集合。接口的定义方式、组成部分都与抽象类相似,却比...详情>>
2023-05-29 11:26:17热门推荐
如何进行mysql数据备份?
沸什么是servlet的生命周期?servlet请求处理流程是怎样的?
热servlet底层原理是什么?
热怎样编写java程序?
新多线程的优势与劣势分别是什么?
ssm框架的作用与原理是什么?
设计模式之生产者与消费者的代码实现
接口和抽象类有什么区别?4个方面对比
从零开始学Java之interface接口
从零开始学Java之Java中的内部类是怎么回事?
一分钟带你了解MySQL——基础与介绍
在java中,super关键字怎样使用
什么是事件流以及事件流的传播机制 ?
弹性盒有哪些属性是在父元素身上?