Redis之HASH

HASH 哈希

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

示例

HSET key field value -- 设置 key 指定的哈希集中指定字段的值

> hset myhash field1 Hello

hget -- 获取指定的hash field。

> hget myhash field1
 "Hello"
> hget myhash field3
 (nil)

由于数据库没有field3,所以取到的是一个空值nil.

HSETNX key field value -- 只在 key 指定的哈希集中不存在指定的字段时,设置字段的值。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段已存在,该操作无效果。

> hsetnx myhash field "Hello"
(integer) 1
> hsetnx myhash field "Hello"
(integer) 0

第一次执行是成功的,但第二次执行相同的命令失败,原因是field已经存在了。

hmset -- 同时设置hash的多个field。

> hmset myhash field1 Hello field2 World
> OK

hmget -- 获取全部指定的hash filed。

> hmget myhash field1 field2 field3
1) "Hello"
2) "World"
3) (nil)

hincrby -- 指定的hash filed 加上给定值。

> hset myhash field3 20
 (integer) 1
> hget myhash field3
 "20"
> hincrby myhash field3 -8
(integer) 12
> hget myhash field3
"12

hexists -- 测试指定field是否存在。

> hexists myhash field1
  (integer) 1
> hexists myhash field9
  (integer) 0
  通过上例可以说明field1存在,但field9是不存在的。

hdel 从 key 指定的哈希集中移除指定的域

127.0.0.1:6379> hkeys myhash
1) "field1"
2) "field"
3) "field2"
4) "field3"
127.0.0.1:6379> hdel myhash field
(integer) 1
127.0.0.1:6379> hkeys myhash
1) "field1"
2) "field2"
3) "field3"
127.0.0.1:6379>

hlen -- 返回指定hash的field数量。

> hlen myhash
  (integer) 4

hkeys -- 返回hash的所有field。

> hkeys myhash
> 1) "field2"
> 2) "field"
> 3) "field3"

说明这个hash中有3个field。

hvals -- 返回hash的所有value。

> hvals myhash
1) "World"
2)"Hello"
3)"12"

说明这个hash中有3个field。

hgetall -- 获取某个hash中全部的filed及value。

> hgetall myhash
1) "field2"
2) "World"
3) "field"
4) "Hello"
5) "field3"
6) "12"

hvals -- 返回 hash 的所有 value。

127.0.0.1:6379> hvals myhash
1) "hello"
2) "hello"
3) "hello2"
4) "12"

 

时间: 2024-10-05 23:09:05

Redis之HASH的相关文章

二:redis 的hash类型相关操作

=====================二种:hash类型================== 介绍:redis -> hash是一个string类型的field和value的映射表 hash特别适合对应存储对象,相较于将对象的每个字段存成单个string类型 将一个对象存储在hash类型中会占用更少的内存,并且可以方便的存取整个对象 0:hset *如果 key(就是hash表) 不存在,一个新的哈希表被创建并进行 HSET 操作 设置hash field为指定值,如果key不存在,则先创建

redis的hash操作在集中式session中的应用

在集群部署时,为了高可用性的目的,往往把session进行共享,共享分为两种:session复制和集中式管理. redis在session集中式管理中可以起到比较大的作用. 制约session集中式共享的两大因素: 1. session必须有ha机制,集群中部分服务器发生故障时,保证session不丢失. 2. session的生命周期管理. 3. session的大小未知,整体的序列化和反序列化成本比较高. redis的解决方式 1. redis具有持久化功能,且sentiment具有ha功效

33. Python redis的 hash类型操作 其他常用操作

1.hash 类型操作 import redis pool = redis.ConnectionPool(host="192.168.48.131", port=6379, db=0) r = redis.Redis(connection_pool=pool) #hash类型操作:是一个name对应一个字典 #语法 hset(name, key, value) #name 对应的hash中设置一个键值对(不存在,则创建键值对:否则,修改键值对) # 语法参数解释: name: redi

redis 数据类型Hash

redis的Hash数据类型: hash数据类型 Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. 创建map: hmset map c "c++" j "java" p "php" // 创建map,同时添加多个key // 同时将多个key-value(字段-值)对设置到哈希表中 hset map bj "baoji" // 创建map,同时添加一个key,之后我

redis之Hash存储与String存储内存消耗对比

存储对象User String存储方式: SET media:1155315 939 GET media:1155315 > 939 String结构存储该对象 存储量 使用内存(KB) 使用时间(毫秒) 使用cpu 100 30.72 2983   100 30.72 1224   100 40.96 2638   100 40.96 1543   100 40.96 3335   4487 1934.62 21760 0.05 4487 1934.59 21732 0.05        

Basic Tutorials of Redis(3) -Hash

When you first saw the name of Hash,what do you think?HashSet,HashTable or other data structs of C#?As for me, the first time I saw the Hash,I considered is as the HashTable.Actually,Hash can identify with HashTable,the same as DataRow.A row data of

redis数据类型——hash

——转载: 一.概述: 我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器.所以该类型非常适合于存储值对象的信息.如Username.Password和Age等.如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间.每一个Hash可以存储4294967295个键值对. 二.相关命令列表: 命令原型 时间复杂度 命令描述 返回值 HSET key field value O(1) 为指定的Key设定Field/Value对,

Redis笔记- Hash

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. 实例: 127.0.0.1:6379> HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000 OK 127.0.0.1:6379> HGETALL runoobkey 1) "

[Redis Chapter4] Hash

Hasehes  Redis hash是一个string类型的field和value映射表.hash特别适合于存储对象.相对存成string,现在存为一个hash类型中可以占用更少的内存.且可以更方便的存储整个对象. hset redis 127.0.0.1:6379> hset user:001 name michael (integer) 1 redis 127.0.0.1:6379> hget user:001 name "michael" hsetnx redis