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等数据结构的存 ...
随机推荐
- 【AR实验室】ARToolKit之概述篇
0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...
- nohup程序后台执行
Linux常用命令,用于不挂断的执行程序. nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令.该命令可以在你退出帐户/关闭终端之后继续运行相应 ...
- 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- json与JavaScript对象互换
1,json字符串转化为JavaScript对象: 方法:JSON.parse(string) eg:var account = '{"name":"jaytan&quo ...
- Hyper-v 安装CentOS 7 (其他虚拟机一样参考)
平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html hyper-v安装很多人没弄过,我这里介绍一下.(其他虚拟机参 ...
- 由Dapper QueryMultiple 返回数据的问题得出==》Dapper QueryMultiple并不会帮我们识别多个返回值的顺序
异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 今天帮群友整理Dapper基础教程的时候手脚快了点,然后遇到了一个小问题,Dapp ...
- Laravel Composer and ServiceProvider
Composer and: 创建自定义类库时,按命名空间把文件夹结构组织好 composer.json>autoload>classmap>psr-4 composer dump-a ...
- OVS local network 连通性分析 - 每天5分钟玩转 OpenStack(132)
前面已经创建了两个 OVS local network,今天详细分析它们之间的连通性. launch 新的 instance "cirros-vm3",网络选择 second_lo ...
- 【原创经验分享】WCF之消息队列
最近都在鼓捣这个WCF,因为看到说WCF比WebService功能要强大许多,另外也看了一些公司的招聘信息,貌似一些中.高级的程序员招聘,都有提及到WCF这一块,所以,自己也关心关心一下,虽然目前工作 ...