当前位置: 首页 > news >正文

Redis常用命令入门2:散列类型

散列命令

散列类型的键值其实也是一种字典解耦,其存储了字段和字段值的映射,但字段值只能是字符串,不支持其他数据类型,所以说散列类型不能嵌套其他的数据类型。一个散列类型的键可以包含最多2的32次方-1个字段。

另外提前说一声,除了散列类型,其他的数据类型同样不支持数据类型嵌套

1、基本命令

例如现在要存储ID为1的文章,分别有title、author、time、content

则键为post:1,字段分别为title、author、time、content,值分别为“the first post”、“me”、“2014-03-04”、“This is my first post.”,存储如下

redis 127.0.0.1:6379> hmset post:1 title "the first post" author "JoJo" time 2016/08/25 content "this is my first post"
OK

 

这里使用的是hmset命令,具体散列的基本赋值命令如下:
hset key field value   #例如hset post:2 title “second post”

hget key field             #例如hget post:2 title,获取id为2的post的title值

hmset key field value [field value ...]  #这个同上,批量存值

hmget key field [field ...]                      #批量取值,取得列表

例:

redis 127.0.0.1:6379> hmget post:1 time author
1) "2016/08/25"
2) "JoJo"

hgetall key                  #取得key所对应的所有键值列表,这里给出个例子

 2、判断是否存在

hexists key field

如果存在返回1,否则返回0(如果键不存在也返回0)。

3、当字段不存在时赋值

hsetnx key field value

这个和hset的区别就是如果字段存在,这个命令将不执行任何操作,但是这里有一个区别就是Redis提供的这些命令都是原子操作,不会产生数据不一致问题。

例:

redis 127.0.0.1:6379> hexists post:1 time
(integer) 1    //判断是存在time字段的
redis 127.0.0.1:6379> hsetnx post:1 time 2016/08/26
(integer) 0    //不存在的话,设置time,存在的话返回0,值不变,原始值
redis 127.0.0.1:6379> hget post:1 time
"2016/08/25"
redis 127.0.0.1:6379> hsetnx post:1 age 23
(integer) 1     //不存在age字段,返回1,并设置age字段
redis 127.0.0.1:6379> hget post:1 age
"23"

 

4、增加数字

hincrby key field number

这里就和incry命令类似了。

例:

redis 127.0.0.1:6379> hincrby post:1 age 2
(integer) 25

5、删除字段

hdel key field [field ...]

删除字段,一个或多个,返回值是被删除字段的个数

6、其他命令

hkeys key    #获取字段名

hvals key    #获取字段名

示例如下:

最后还有一个就是获取字段数量的命令:

hlen key

返回字段的数量

redis 127.0.0.1:6379> hlen post:1
(integer) 5

 

相关文章:

  • mysql通过配置文件进行优化
  • linux基础概念和个人笔记总结(6)
  • 终身受益的九段话
  • 前后端分离 的趋势
  • PHP isset()与empty()的使用区别详解
  • CentOS 7系统LAMP配置PHP-FPM的示例
  • 从控制台输入输出,来进行数据库的插入和查询操作的小程序
  • 同一台router上同时配置DM*** Hub端和Easy*** Server端
  • An incompatible version 1.1.14 of APR based Apache Tomcat Native library is installed, while Tomcat
  • 操作Word
  • Bootstrap3系列:导航
  • mfs理论知识
  • ios中二维码的使用之一: 二维码的生成
  • linux rc.sysinit修复
  • 字符串转换
  • Akka系列(七):Actor持久化之Akka persistence
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • input实现文字超出省略号功能
  • JS专题之继承
  • MySQL QA
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • overflow: hidden IE7无效
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Spring声明式事务管理之一:五大属性分析
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Vue UI框架库开发介绍
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 分布式事物理论与实践
  • 服务器之间,相同帐号,实现免密钥登录
  • 基于axios的vue插件,让http请求更简单
  • 前端技术周刊 2019-01-14:客户端存储
  • 使用 @font-face
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 如何在招聘中考核.NET架构师
  • 通过调用文摘列表API获取文摘
  • #1014 : Trie树
  • #define、const、typedef的差别
  • #pragma once与条件编译
  • #stm32驱动外设模块总结w5500模块
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (十五)使用Nexus创建Maven私服
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)认识微服务
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)重识new
  • .NET框架
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .NET业务框架的构建
  • @DataRedisTest测试redis从未如此丝滑
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @Repository 注解
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)