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系列博文:双击地址

时间: 2024-10-13 04:24:12

redis数据结构详解之Hash(四)的相关文章

Redis数据结构详解之List(二)

序言 思来想去感觉redis中的list没什么好写的,如果单写几个命令的操作过于乏味,所以本篇最后我会根据redis中list数据类型的特殊属性,同时对比成熟的消息队列产品rabbitmq,使用redis实现一个消息队列. 为啦让本篇更有魅力,我再介绍下redis中list的基本属性,以及为什么使用redis中list列表类型,为什么使用消息队列,为什么不用rabbitmq而使用redis实现消息队列?呢,到这里为止,如果你是大咖,大牛,大神,大爷!不要听我吹牛逼啦,Close Page and

Redis数据结构详解,五种数据结构分分钟掌握

redis数据类型分为:字符串类型.散列类型.列表类型.集合类型.有序集合类型.redis这么火,它运行有多块?一台普通的笔记本电脑,可以在1秒钟内完成十万次的读写操作.原子操作:最小的操作单位,不能继续拆分.即最小的执行单位,不会被其他命令插入.高并发下不存在竞态条件.KEY的命名:一个良好的建议是article:1:title来存储ID为1的文章的标题.一.前言.1.获取key的列表:KEYS pattern 通配符有?*[]和转义\2.key是否存在: EXISTS key 存在返回1,不

Redis数据结构详解(一)

前言 Redis和Memcached最大的区别,Redis 除啦支持数据持久化之外,还支持更多的数据类型而不仅仅是简单key-value结构的数据记录.Redis还支持对这些数据类型做更多的服务端操作,从而也能减少网路的IO次数与数据体积,这里也比Memcached要方便与高效,只针对这一点啊,想喷的左上角群喷.上篇吹牛逼20分钟教你做memcached大神 Redis主要支持的数据类型有5种:String ,Hash ,List ,Set ,和 Sorted Set. 下面我针对Redis支持

Redis数据结构详解之Set(三)

序言 在Redis中,Set和list都是字符串序列,非常相似,不同之处在于Set是用哈希表来保持字符串的唯一性,没有先后顺序,不像list一样,可以在首尾增删数据.但是set也有自己的相应处理命令来完成对自己的操作.下面我们来看下Set的命令怎么使用. 操作单个set的命令 redis中set列表的新增命令Sadd,key值相同下的value值不能重复,返回插入的数据个数,key后面可跟多个value值 127.0.0.1:6379>sadd mySet 1   ---添加key为mySet的

【转】Redis内部数据结构详解——ziplist

本文是<Redis内部数据结构详解>系列的第四篇.在本文中,我们首先介绍一个新的Redis内部数据结构--ziplist,然后在文章后半部分我们会讨论一下在robj, dict和ziplist的基础上,Redis对外暴露的hash结构是怎样构建起来的. 我们在讨论中还会涉及到两个Redis配置(在redis.conf中的ADVANCED CONFIG部分): hash-max-ziplist-entries 512 hash-max-ziplist-value 64 本文的后半部分会对这两个配

[转]Redis内部数据结构详解-sds

本文是<Redis内部数据结构详解>系列的第二篇,讲述Redis中使用最多的一个基础数据结构:sds. 不管在哪门编程语言当中,字符串都几乎是使用最多的数据结构.sds正是在Redis中被广泛使用的字符串结构,它的全称是Simple Dynamic String.与其它语言环境中出现的字符串相比,它具有如下显著的特点: 可动态扩展内存.sds表示的字符串其内容可以修改,也可以追加.在很多语言中字符串会分为mutable和immutable两种,显然sds属于mutable类型的. 二进制安全(

【转】Redis内部数据结构详解 -- skiplist

本文是<Redis内部数据结构详解>系列的第六篇.在本文中,我们围绕一个Redis的内部数据结构--skiplist展开讨论. Redis里面使用skiplist是为了实现sorted set这种对外的数据结构.sorted set提供的操作非常丰富,可以满足非常多的应用场景.这也意味着,sorted set相对来说实现比较复杂.同时,skiplist这种数据结构对于很多人来说都比较陌生,因为大部分学校里的算法课都没有对这种数据结构进行过详细的介绍.因此,为了介绍得足够清楚,本文会比这个系列的

Redis配置文件redis.conf详解

一.Redis配置文件redis.conf详解 1 # Note on units: when memory size is needed, it is possible to specifiy 2 # it in the usual form of 1k 5GB 4M and so forth: 3 # 4 # 1k => 1000 bytes 5 # 1kb => 1024 bytes 6 # 1m => 1000000 bytes 7 # 1mb => 1024*1024 b

Redis原理详解

Redis原理详解 数据类型 Redis最为常用的数据类型主要有以下五种: String Hash List Set Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的: 首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示:type 代表一个value对象具体是何种数据类型,encoding是不同数据类型在redis内部的存储方式,比如:typ