3、哈希

几乎所有的语言都支持了哈希(hash)类型。在Redis中,哈希类型是指键值本身又是一个键值对结构,形如:value = {{field, value} ... {field, value}},Redis键值对和哈希类型的关系可以入下图所示:

哈希类型中的映射关系叫做field-value,注意这里的value指的是field对应的值,而不是键对应的值。

3.1命令

(1)设置值

 hset key field value

如果设置成功会返回1,反之则返回0。此外Redis提供了hsetnx命令的作用同setnx,只不过作用域由键变为了field。

(2)获取值

 hget key field

如果获取的键或者field不存在,则返回nil

(3)删除field

 hdel key field [field ...]

hdel会删除一个或者多个field,返回结果为成功删除field的个数。

(4)计算filed的个数

 hlen key

(5)批量设置或获取filed-value

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

hmset和hmget分别是批量设置和获取field-value,hmset需要的参数是key和多对field-value,hmget需要的参数是key和多个field。

(6)判断filed是否存在

 hexists key field

例如user:3包含name域,所以返回为1,不包含时,返回为0。

(7)获取所有filed

 hkeys key

hkeys命令应该叫hfield更为恰当,它返回的是执行哈希键所有的field。

(8)获取所有value

 hvals key

(9)获取所有的filed-value

 hgetall key

如下的操作会获取user:3的所有field-value。

在使用hgetall命令时,如果哈希元素个数比较多时,会存在阻塞Redis的可能,如果开发人员只是为了获取部分field,可以使用hmget,如果一定要获得全部的field-value,可以使用命令hscan,该命令会渐进式遍历哈希类型。

(10)hincrby hincrbyfloat

 hincrby key field
hincrbyfloat key field

命令hincrby和hincrbyfloat就像incrby和incrbyfloat一样,只不过它们的作用域为field。

(11)计算value的字符串长度(Redis 3.2以上版本)

 hstrlen key field

例如hget user:3 name的value是kevin,那么hstrlen的返回值为5。

3.2 内部编码

哈希类型的内部编码有2种:

3.3 使用场景

【redis 学习系列】API的理解与使用(二)的更多相关文章

  1. 分布式缓存技术redis学习系列(五)——redis实战(redis与spring整合,分布式锁实现)

    本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redi ...

  2. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  3. 分布式缓存技术redis学习系列

    分布式缓存技术redis学习系列(一)--redis简介以及linux上的安装以及操作redis问题整理 分布式缓存技术redis学习系列(二)--详细讲解redis数据结构(内存模型)以及常用命令 ...

  4. redis学习系列

    redis学习系列 基本看完 最近在看redis的代码,简单记录下自己认为重要的点,自己写比较费时间的,我会把查到的资料贴出来方便查看 淘宝的redis内存分析 http://www.searchtb ...

  5. C# Redis学习系列三:Redis配置主从

    Redis配置主从 主IP :端口      192.168.0.103 6666 从IP:端口       192.168.0.108 3333 配置从库 (1)安装服务: redis-server ...

  6. Python操作redis学习系列之(集合)set,redis set详解 (六)

    # -*- coding: utf-8 -*- import redis r = redis.Redis(host=") 1. Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合 ...

  7. C# Redis学习系列二:Redis基本设置

    上一篇:C# Redis学习系列一:Redis的认识.下载.安装.使用 一.redis 设置密码 使用下载好的 redis-cli.exe 指令: 1.设置密码: config set require ...

  8. Redis学习系列一Linux环境搭建

    1.简介 Redis是互联网技术架构中在存储系统中用的最广泛的中间件,是中高级后端工程师技术面试中面试官最喜欢问的工程技能之一.所以Redis是.Net技术开发必须掌握的技能之一.所以通过这个系列的随 ...

  9. 【redis 学习系列】API的理解与使用(一)

    Redis提供了5种数据结构,以下介绍一些预备知识以及Redis的5种数据结构 1.预备知识 1.1 全局命令 Redis的5种数据结构,它们是键值对中的值,对于键来说有一些通用的命令. (1)查看所 ...

随机推荐

  1. jar包和war包的介绍和区别

    jar包和war包的介绍和区别 Java程序员的日常 关注 做Java开发,jar包和war包接触的挺多的,有必要对它们做一个深入的了解,特总结整理如下: 1.jar包的介绍 JAR(Java Arc ...

  2. systemverilog.vim

    " Vim syntax file " Language: SystemVerilog " Maintainer: Stephen Hobbs <stephenh@ ...

  3. KeyPress和KeyDown/KeyUp

    (1) KeyPress 和KeyDown .KeyUp之间的区别:    1).KeyPress主要用来捕获数字(注意:包括Shift+数字的符号).字母(注意:包括大小写).小键盘等除了F1-12 ...

  4. 所有设计复杂的ORM都是浮云

    很久没有写文章了. 一直很忙,不是很有时间整理. 今天主要是来吐槽下那些设计很复杂的ORM的. 项目做的越多,越觉得ORM这个东西设计的太复杂实在是没什么意义. 比较推崇Dapper这样比较简单,效率 ...

  5. 三、CSS样式——链接

    CSS链接的四种状态: a:link ——普通的.未被访问的链接 a:visited ——用户已访问的链接 a:hover ——鼠标指针位于链接的上方 a:active ——链接背点击的时刻 常见的链 ...

  6. rest_framework目录

    一  REST API规范 二  rest framework框架的基本使用

  7. Linux 下的 Docker 安装与使用

    一.安装与配置 1.安装依赖包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 2.设置阿里云镜像源 sudo yum ...

  8. H5-meta标签使用大全

    meta标签有下面的作用:搜索引擎优化(提高搜索性能),控制页面功能化. meta标签的组成:meta标签共有两个属性,它们分别是http-equiv属性和name属性. 1.name属性 name属 ...

  9. iOS下 UILabel 如何自动换行

    背景: 相信很多朋友都遇到过,文本的内容长度不一,需要根据内容的多少来自动换行处理. 场景: 很多APP中评论,有的评论长,有的评论短,有的一行,有的多行.   下面以评论的实现为例来说说具体如何实现 ...

  10. Vim常用配置

    mkdir -p ~/.vim/bundle/Vundle.vim git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/V ...