redis数据结构详解之Hash(四)
序言
Hash数据结构累似c#中的dictionary,大家对数组应该比较了解,数组是通过索引快速定位到指定元素的,无论是访问数组的第一个元素还是最后一个元素,所耗费的时间都是一样的,但是数组中的索引却没有实际意义,他只是一个位置而已。而我们在查找某个元素时,一般都会使用有意义的字段来做索引,这就产生啦dictionary。其实dictionary的实现,就是让key跟下标索引有一定的关系,所实现的,让他的查找算法复杂度变为常数O(1)。
扯完上面的蛋,我来说下今天要说redis中的Hash命令,如果你不懂redis,就从第一篇看跟着来敲一边,别懒,懒啦别人装逼你就装不了啦,哈哈。
redis中hash对单个key/value操作的命令演示
redis中hash的添加命令hset,如果key不存在,创建key,存在,则覆盖原有值
redis 127.0.0.1:6379>hset myhash name Jim ----给key为myset的键值设置键为name值为Jim
redis中hash的查看命令hget
redis 127.0.0.1:6379>hget myhash name ----输出: "Jim",获取key为myset,键为name的value
redis 127.0.0.1:6379>hset myhash name zlh ----覆盖原有值,值改为zlh替换Jim
redis 127.0.0.1:6379>hget myhash name ---输出:"zlh"
redis中hash的获取key包含的field数量的命令hlen
redis 127.0.0.1:6379>hset myhash age 31 --- 设置key为myset键为age的value=31
redis 127.0.0.1:6379>hlen myhash ---输出为2,key为myset的field数量为2
redis中判断指定key中指定field是否存在的命令hexists,存在返回1,不存在返回0
redis 127.0.0.1:6379>hexists myhash name ---返回1,说明存在
redis 127.0.0.1:6379>hexists myhash name1 ---返回0,说明不存在
redis中hash删除命令hdel,删除一个或多个指定的字段
redis 127.0.0.1:6379>hset myhash sex nan ----添加数据
redis 127.0.0.1:6379>hset myhash issingle yes ----添加数据
redis 127.0.0.1:6379>hset myhash hobby sports ----添加数据
redis 127.0.0.1:6379>hdel myhash hobby ----删除单个数据,filed为hobby的数据
redis 127.0.0.1:6379>hdel myhash issingle sex ---删除多个数据,filed为issingle和sex的两条数据
redis中hash如果key或field不存在插入有效,否则不采取操作的命令hsetnx
redis 127.0.0.1:6379>hsetnx myhash sex nan ---设置myhash,field为sex的value为nan,成功返回1,因为原来不存在sex这个字段
redis 127.0.0.1:6379>hsetnx myhash sex nv ---设置myhash,field为sex的value为nv,不成功返回0,因为原来存在sex这个字段并且有值
redis 127.0.0.1:6379>hget myhash sex --输出"nan"
redis中hash中的value为数值时操作增减的命令hincrby
redis 127.0.0.1:6379>del myhash ---删除该键
redis 127.0.0.1:6379>hset myhash age 31 ---设置key为myhash的键为age值为31
redis 127.0.0.1:6379>hincrby myhash age 10 ---给key为myhash,键为age的值加10,输出结果为41
redis 127.0.0.1:6379>hincrby myhash age -10 ---给key为myhash,键为age的值减去10,输出结果为31
redis中hash批量操作key/value的命令演示
批量添加key/value的命令hmset
redis 127.0.0.1:6379>del myhash --删除该键
redis 127.0.0.1:6379>hmset myhash name zlh age 31 issingle no ----给key为myhash的hash添加name=zlh,age=31,issingle=no的多个键值
批量获取key/value的命令hmget
redis 127.0.0.1:6379>hmget myhash name age issingle ----输出结果为:zlh 31 no
根据myhash键获取所有的字段及value的命令hgetall
redis 127.0.0.1:6379>hgetall myhash ----输出结果为:name age issingle zlh 31 no
获取所有的field的命令hkeys
redis 127.0.0.1:6379>hkeys myhash ---输出结果为:name age issingle
获取所有字段的值的命令hvals
redis 127.0.0.1:6379>hvals myhash ----输出结果为:zlh 31 no
附言
如果你在看到本文后有什么疑问,请加入博客左上角群,一起交流学习。
我的redis系列博文:双击地址
redis数据结构详解之Hash(四)的更多相关文章
- 5种Redis数据结构详解
本文主要和大家分享 5种Redis数据结构详解,希望文中的案例和代码,能帮助到大家. 转载链接:https://www.php.cn/php-weizijiaocheng-388126.html 2. ...
- Redis数据结构详解之List(二)
序言 思来想去感觉redis中的list没什么好写的,如果单写几个命令的操作过于乏味,所以本篇最后我会根据redis中list数据类型的特殊属性,同时对比成熟的消息队列产品rabbitmq,使用red ...
- Redis数据结构详解,五种数据结构分分钟掌握
redis数据类型分为:字符串类型.散列类型.列表类型.集合类型.有序集合类型.redis这么火,它运行有多块?一台普通的笔记本电脑,可以在1秒钟内完成十万次的读写操作.原子操作:最小的操作单位,不能 ...
- Redis数据结构详解(一)
前言 Redis和Memcached最大的区别,Redis 除啦支持数据持久化之外,还支持更多的数据类型而不仅仅是简单key-value结构的数据记录.Redis还支持对这些数据类型做更多的服务端操作 ...
- Redis数据结构详解(2)-redis中的字典dict
前提知识 字典,又被称为符号表(symbol table)或映射(map),其实简单地可以理解为键值对key-value. 比如Java的常见集合类HashMap,就是用来存储键值对的. 字典中的键( ...
- Redis数据结构详解之Zset(五)
序言 Zset跟Set之间可以有并集运算,因为他们存储的数据字符串集合,不能有一样的成员出现在一个zset中,但是为什么有了set还要有zset呢?zset叫做有序集合,而set是无序的,zset怎么 ...
- Redis数据结构详解之Set(三)
序言 在Redis中,Set和list都是字符串序列,非常相似,不同之处在于Set是用哈希表来保持字符串的唯一性,没有先后顺序,不像list一样,可以在首尾增删数据.但是set也有自己的相应处理命令来 ...
- Redis数据结构详解(1)-redis中的字符串(SDS)
前提知识 我们先从百科上摘下Redis的解释: Redis是一个使用ANSI C编写的开源.支持网络.基于内存.分布式.可选持久性的键值对存储数据库. (不用过多在意ANSI,它只是一个标准,你可以理 ...
- redis 五种数据结构详解(string,list,set,zset,hash)
redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...
随机推荐
- C语言 · 高精度加法
问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...
- [Java 缓存] Java Cache之 DCache的简单应用.
前言 上次总结了下本地缓存Guava Cache的简单应用, 这次来继续说下项目中使用的DCache的简单使用. 这里分为几部分进行总结, 1)DCache介绍; 2)DCache配置及使用; 3)使 ...
- 我为NET狂官方面试题-数据库篇
求结果:select "1"? 查找包含"objs"的表?查找包含"o"的数据库? 求今天距离2002年有多少年,多少天? 请用一句SQL获 ...
- 【原】AFNetworking源码阅读(一)
[原]AFNetworking源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 AFNetworking版本:3.0.4 由于我平常并没有经常使用AFNetw ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(68)-微信公众平台开发- 资源环境准备
系列目录 前言: 本次将学习扩展企业微信公众号功能,微信公众号也是企业流量及品牌推广的主要途径,所谓工欲善其事必先利其器,调试微信必须把程序发布外网环境,导致调试速度太慢,太麻烦! 我们需要准备妥当才 ...
- 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法
若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...
- C++中的const
一,C++中const的基本知识 1.C++中const的基本概念 1.const是定义常量的关键字,表示只读,不可以修改. 2.const在定义常量的时候必须要初始化,否则报错,因为常量无法修改,只 ...
- 原生javascript 固定表头原理与源码
我在工作中需要固定表头这个功能,我不想去找,没意思.于是就写了一个,我写的是angularjs 自定义指令 起了个 "fix-header" ,有人叫 "freeze- ...
- CSharpGL(33)使用uniform块来优化对uniform变量的读写
CSharpGL(33)使用uniform块来优化对uniform变量的读写 +BIT祝威+悄悄在此留下版了个权的信息说: Uniform块 如果shader程序变得比较复杂,那么其中用到的unifo ...
- CSS中强悍的相对单位之em(em-and-elastic-layouts)学习小记
使用相对单位em注意点 1.浏览器默认字体是16px,即1em = 16px,根元素设置如下 html{ font-size: 100%; /* WinIE text resize correctio ...