redis hash 储存mysql_Redis系列-存储hash主要操作命令
Redis系列-存储篇hash主要操作函数小结
hash是一些列key value(field value)的映射表。常常用其存储一些对象实例。相对于把一个对象的各个字段存储为string,存储为hash会占用更少的内存。为什么会更省内存呢?需要搞清楚两个配置(hash-max-zipmap-entries和hash-max-zipmap-value)的含义,配置的详细介绍,我打算放在最后的配置优化环节讲。
1)新增
a)hset
语法:hset key field value
解释:设置hash表key中的field的值。如果hash表不存在,则创建,并执行设置field的值,如果hash表存在,值field的值覆盖或新增
[root@localhost ~]# redis-cli
redis 127.0.0.1:6379> hset user.1 name lisi #设置key user.1 name域 的值
(integer) 1
redis 127.0.0.1:6379> hset user.1 age 45 #设置age域
(integer) 1
redis 127.0.0.1:6379> hset user.1 tech lisi
(integer) 1
b)hmset
语法:hash key field value[key value]
解释:批量设置hash表key的域
redis 127.0.0.1:6379> hmset user.2 name niuer age 34 #同时设置name 和age域
OK
c)hsetnx
语法:hsetnx key field value
解释:仅仅当field域不存在时,设置hash表field的值
redis 127.0.0.1:6379> hsetnx user.1 name lisi #由于name域已经设置过,所以返回0
(integer) 0
redis 127.0.0.1:6379> hsetnx user.1 fri 5
(integer) 1 #fri域没有设置过,所以hset并返回1
2)查询
a)hget
语法:hget key field
解释:获取哈希表key的field值
redis 127.0.0.1:6379> hget user.1 name #存在的hash表及域
"lisi"
redis 127.0.0.1:6379> hget user.3 name #不存在的hash表
(nil)
redis 127.0.0.1:6379> hget user.1 bb #不存在的域
(nil)
b)hmget
语法:hmget key field[field]
解释:批量获取hash表的filed
redis 127.0.0.1:6379> hmget user.1 name age fri tech
1) "lisi"
2) "45"
3) "5"
4) "lisi"
redis 127.0.0.1:6379> hmget user.1 name age fri tech nofield #存在hash表中包含不存在的域nofield
1) "lisi"
2) "45"
3) "5"
4) "lisi"
5) (nil)
redis 127.0.0.1:6379> hmget user.3 name age fri #不存在的hash表
1) (nil)
2) (nil)
3) (nil)
c)hgetall
语法:hgetall key
解释:获取hash表的所有域值
redis 127.0.0.1:6379> hgetall user.2 #存在的hash表
1) "name" #域
2) "niuer" #域name的值
3) "age" #域
4) "34" #域age的值
redis 127.0.0.1:6379> hgetall user.3 #不存在的hansh表
(empty list or set)
d)hexists
语法:hexists key field
解释:判断hash表中是否存在某个域
redis 127.0.0.1:6379> hexists user.1 name #存在
(integer) 1
redis 127.0.0.1:6379> hexists user.1 nofield #不存在
(integer) 0
redis 127.0.0.1:6379> hexists use1 nofield #hash表不存在
(integer) 0
e)hkeys
语法:hkeys key
解释:获取hash表的所有域
redis 127.0.0.1:6379> hkeys user.1 #存在的hash表
1) "name"
2) "age"
3) "tech"
4) "fri"
redis 127.0.0.1:6379> hkeys user.4 #不存在的hash
(empty list or set)
f)hvals
语法:hvals key
解释:获取hash表的所有域值
redis 127.0.0.1:6379> hvals user.1 #存在hash
1) "lisi"
2) "45"
3) "lisi"
4) "5"
redis 127.0.0.1:6379> hvals user.4 #不存在
(empty list or set)
3)修改
语法:hincrby key field increment
解释:hash表field域的数值增加步长increment,如果increment是负值,则是递减。如果域不存在,初始值视为0
redis 127.0.0.1:6379> hincrby user.1 age 2 #增加2
(integer) 47
redis 127.0.0.1:6379> hincrby user.1 age -3 #减少3
(integer) 44
redis 127.0.0.1:6379> hincrby user.1 age2 -3 #域不能存在,初始值是0
(integer) -3
4)删除
语法:hdel key field[field]
解释:删除hash的域,如果指定多个field,则删除多个
redis 127.0.0.1:6379> hkeys user.1
1) "name"
2) "age"
3) "tech"
4) "fri"
5) "age2"
redis 127.0.0.1:6379> hdel user.1 age2 #删除一个域
(integer) 1
redis 127.0.0.1:6379> hkeys user.1
1) "name"
2) "age"
3) "tech"
4) "fri"
redis 127.0.0.1:6379> hdel user.1 fri tech #删除2个域
(integer) 2
redis 127.0.0.1:6379> hkeys user.1
1) "name"
2) "age"
redis 127.0.0.1:6379> hdel user.1 bb #删除一个不存在的域
(integer) 0 #返回0
5)其他
语法:hlen key
解释:获取hash的域数量
redis 127.0.0.1:6379> hkeys user.1
1) "name"
2) "age"
redis 127.0.0.1:6379> hlen user.1 #存在2个域
(integer) 2
redis 127.0.0.1:6379> hlen user.4 #不存在的hash
(integer) 0
redis hash 储存mysql_Redis系列-存储hash主要操作命令相关推荐
- redis最大储存512m_redis系列篇01
今天写的这篇是redis系列的文章,我的安排是由浅入深写redis系列.本篇是简单的介绍入门,后续的文章会详细讲解redis深层次的知识. 欢迎大家关注我的微信公众号:码农Bug 首先说几个简单的命令 ...
- 一致性hash算法和redis集群动态数据存储
记录:对一致性Hash算法,Java代码实现的深入研究链接地址: http://www.cnblogs.com/xrq730/p/5186728.html 全部来自: https://mp.weixi ...
- ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象...
http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value (存一个对象的时候key存) 将哈希 ...
- Redis操作str、list、hash、set、sortedset、bitmap
通用操作 切换库(number的值在0-15之间,db0 ~ db15) select number 查看键 keys 表达式 :如 keys * 数据类型 type key 键是否存在 exists ...
- redis的String、List、Hash、SET、ZSet五中数据类型常用的一些场景总结
目 目录 1.String类型常见的使用场景 1.1 一般的业务功能模块,比如购物车 1.2 简单的字符缓存 1.3 储存结构体或者对象 1.4 计数功能 1.5 各类场景下(单机或分布式)的标识号 ...
- Redis 笔记(05)— hash 类型(设置获取单个hash值、判断hash键是否存在、设置获取多个hash值、获取所有hash的键、获取所有hash的值、删除hash指定键)
Redis 的字典是无序字典.Redis 的字典的值只能是字符串,当 hash 移除了最后一个元素之后,该数据结构自动被删除,内存被回收. hash 结构也可以用来存储用户信息,不同于字符串一次性需要 ...
- 02_NoSQL数据库之Redis数据库:string类型和hash类型
Strings类型及操作 String是最简单的类型,一个key对应一个Value,String类型是二进制安全的.Redis的String可以包含任何数据,比如jpg图片或者序列化的对象. S ...
- Redis集群Hash槽分配异常 CLUSTERDOWN Hash slot not served的解决方式
在搭建Redis5.x版本的集群环境出现各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的情况 在Linux同一台服务器下搭建伪集群-- 127 ...
- python之析构方法、item系列、hash方法、eq方法
1.析构方法:释放一个空间之前执行 (new构造方法 申请一个空间) 某对象借用了操作系统的资源,还要通过析构方法归还回去 : 文件资源 网络资源 1)垃圾回收机制 class A:def __d ...
最新文章
- python精进之路 -- open函数
- rabbitmq相关开源代码c
- 《守望先锋》阵亡镜头、全场最佳和亮眼表现是如何设计
- 伯努利数与自然数幂和
- pytorch reshape_PyTorch中的contiguous
- mysql数据库(3)-查询
- R学习-- 数组和矩阵
- Nginx负载调度器+双Tomcat负载及会话共享+MySQL后端数据库
- zabbix利用traceroute命令监控主备链路状态
- ul 中的li取值问题
- android垂直排列元素_元素的视图属性之client
- android如何局域网通信,android局域网怎么通信
- 4 实验项目_Android开发环境搭建
- 文本编辑器(vim)
- windows 10 ltsc 安装微软商店
- ROS学习之error解决记录
- 支付宝退款流程 php,支付宝退款接口对接流程PHP语言
- 移动端H5页面编辑器开发实战--经验技巧篇
- Laravel 文件系统/存储
- 演出遭遇枪击 前Pantera吉他手不幸身亡
热门文章
- 请阐述调用Activity有哪几种方法,并写出相关的Java代码
- Salesforce 中获取数据表字段的 picklist 的值
- filetype 在搜索引擎中的使用方法(2)
- mysql 连接查询分组_详解MySQL中的分组查询与连接查询语句
- 安编译器错误_centos 安装pcre报c++编译器错误
- C++单目运算符的重载与双目运算符的重载【案例】
- 微课|玩转Python轻松过二级(3.1节):列表推导式与切片
- 详解Python生成器函数和生成器对象的原理和用法
- 电子计算机专业211大学,这所高校不是211,但“计算机”实力远超985,被称“IT人才摇篮”...
- 修改ip和计算机名,批量设置IP地址和计算机名