redis 的hash数据类型
hash的常用命令
1.hset
hset key field value
将哈希表key中的域field的值设为value
如果key不存在,一个新的哈希表被创建并进行HSET操作
如果field是哈希表中的一个新建域,并且值设置成功,返回1
如果域field已经存在于哈希表中,旧值将被覆盖,返回0
2.hsetnx
hsetnx key field value
将哈希表key中的域field的值设置为value,当且仅当域field不存在。
如果field已经存在,该操作无效,返回0。
如果key不存在,一个新哈希表被创建并执行HSETNX命令。

3.hget
hget key field
返回哈希表key中给定域field的值
如果域field存在,给定域的值,当给定域不存在或是给定key不存在时,返回nil

4.hmset
hmset key field value [field value ...]
同时将多个field - value(域-值)对设置到哈希表key中
如果命令执行成功,返回OK。当key不是哈希表(hash)类型时,返回一个错误
5.hmget
hmget key field [field ...]
返回哈希表key中,一个或多个给定域的值,顺序和给定域参数的请求顺序一样

6.hgetall
hgetall key
返回哈希表key中,所有的域和值。
在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍
若key不存在,返回空列表

7.hkeys
hkeys key
返回哈希表key中的所有域
当key不存在时,返回一个空表

8.hvals
hvals key
返回哈希表key中的所有值
当key不存在时,返回一个空表

9.hdel
hdel key [key……]
删除哈希表key中的一个或多个指定域,不存在的域将被忽略

10.hlen
hlen key
返回哈希表key中域的数量
当key不存在时,返回0

php示例
$redis = new redis();
$redis->connect('127.0.0.1', 6609);
$redis->delete('hash1');
$redis->hset('hash1', 'k1', 'hello');
echo $redis->hget('hash1', 'k1'); //结果:hello echo "<br>";
$redis->hSetNx('hash1', 'k1', 'hello');
echo $redis->hget('hash1', 'k1'); //结果:hello $redis->delete('hash1');
$redis->hSetNx('hash1', 'k1', 'hello');
$redis->hSetNx('hash1', 'k2', 'world');
echo "<br>";
echo $redis->hget('hash1', 'k2'); //结果:world
echo "<br>";
echo $redis->hlen('hash1'); //结果:2
echo "<br>";
var_dump($redis->hdel('hash1','k1')); //结果:bool(true)
11.hexists
hexists key field
查看哈希表key中,给定域field是否存在
如果哈希表含有给定域,返回1。如果哈希表不含有给定域,或key不存在,返回0

12.hincrby
hincrby key field increment
为哈希表key中的域field的值加上增量increment。增量也可以为负数,相当于对给定域进行减法操作
执行完后返回hash表里的filed的值

删除某个key
del key

php示例
$redis->delete('hash1');
$redis->hSet('hash1', 'a', '1');
$redis->hSet('hash1', 'b', '2');
$redis->hSet('hash1', 'c', '3');
print_r($redis->hkeys('hash1')); //结果:Array ( [0] => a [1] => b [2] => c )
echo "<br>";
print_r($redis->hvals('hash1')); //结果:Array ( [0] => 1 [1] => 2 [2] => 3 )
echo "<br>";
print_r($redis->hgetall('hash1')); //结果:Array ( [a] => x [b] => y [c] => z )
echo "<br>";
var_dump($redis->hExists('hash1', 'a')); //结果:bool(true)
echo "<br>";
echo $redis->hIncrBy('hash1', 'a', 3); //结果:4
echo "<br>";
echo $redis->hIncrBy('hash1', 'a', 1); //结果:5
批量添加、查看
$redis->delete('hash1');
echo "<br>";
var_dump($redis->hmset('hash1', array('name' =>'aaa', 'sex'=>"male"))); //结果:bool(true)
echo "<br>";
print_r($redis->hmget('hash1', array('name', 'sex'))); //结果:Array ( [name] => aaa [sex] => male )
$redis->delete('hash1');
$redis->hmset('user:100', array('name' =>'aaa', 'sex'=>"male"));
$redis->hmset('user:101', array('name' =>'bbb', 'sex'=>"female"));
$redis->hmset('user:102', array('name' =>'ccc', 'sex'=>"male"));
echo "<br>";
print_r($redis->hmget('user:102', array('name', 'sex'))); //结果:Array ( [name] => ccc [sex] => male )
注:
一般使用冒号做分割符,比如在php-admin for redis系统里,就是默认以冒号分割,于是user:100 user:101等key会分成一组

redis 的hash数据类型的更多相关文章
- Redis学习-hash数据类型
hash 类型是string类型的field和value的映射表,或者说是一个string集合,适合存储对象,相比较而言,将一个对象类型存储在hash类型里要比存储在string类型里占用更少的内存空 ...
- redis中hash数据类型
remoteSelf:1>hset website google "www.google.com" "1" remoteSelf:1>hget we ...
- 面试官:说说Redis的Hash底层 我:......(来自阅文的面试题)
redis源码分析系列文章 [Redis源码系列]在Liunx安装和常见API 为什么要从Redis源码分析 String底层实现——动态字符串SDS Redis的双向链表一文全知道 前言 hello ...
- redis 五种数据类型的使用场景
String 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...
- redis五种数据类型的使用(zz)
redis五种数据类型的使用 redis五种数据类型的使用 (摘自:http://tech.it168.com/a2011/0818/1234/000001234478_all.shtml ) 1.S ...
- 关于Redis中的数据类型
一. Redis常用数据类型 Redis最为常用的数据类型主要有以下: String Hash List Set Sorted set 一张图说明问题的本质 图一: 图二: 代码: /* Object ...
- [转]redis 五种数据类型的使用场景
FROM : http://blog.csdn.net/gaogaoshan/article/details/41039581#t5 String 1.String 常用命令: 除了get.set.i ...
- redis中各种数据类型对应的jedis操作命令
redis中各种数据类型对应的jedis操作命令 一.常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 ...
- redis五种数据类型的使用
redis五种数据类型的使用 redis五种数据类型的使用 (摘自:http://tech.it168.com/a2011/0818/1234/000001234478_all.shtml ) 1.S ...
随机推荐
- 【C#】使用MySql.Data.dll连接MySQL数据库
准备工作 在Visual Studio中新建一个C#的控制台应用程序. 确保后台已经启用了MySQL57服务. 在MySQL的安装路径下找到DLL,默认位置是 C:\Program Files (x8 ...
- sql sever读取写入Excel总结
主要用到openrowset,opendatasource系统函数,这两个函数任意一个都能完成任务 用这种方法可以实现Excel和sqlserver表之间的相互导入导出. 如果使用openrowset ...
- map-reduce 优化
map阶段优化 参数:io.sort.mb(default 100) 当map task开始运算,并产生中间数据时,其产生的中间结果并非直接就简单的写入磁盘. 而是会利用到了内存buffer来进行已经 ...
- 在Ubuntu 14.04 64bit上安装Markdown和绘图软件Haroopad
简介 Haroopad:一款让你欲罢不能的Markdown编辑器 身为大程序员,我本来是不需要 Markdown 编辑器的,但是 Haroopad 让我简直欲罢不能,不能再爱更多.跨平台,代码高亮,V ...
- PCL点云特征描述与提取(1)
3D点云特征描述与提取是点云信息处理中最基础也是最关键的一部分,点云的识别.分割,重采样,配准曲面重建等处理大部分算法,都严重依赖特征描述与提取的结果.从尺度上来分,一般分为局部特征的描述和全局特征的 ...
- PCL滤波介绍(2)
(1)使用statisticalOutlierRemoval滤波器移除离群点 使用统计分析技术,从一个点云数据中集中移除测量噪声点(也就是离群点)比如:激光扫描通常会产生密度不均匀的点云数据集,另外测 ...
- matlab中log函数与rssi转距离
我们通常所说的log是指以10为底的对数,而MATLAB中的log却不是这样.Matlab中的log函数在默认情况下是以e为底,即loge,如果需要计算以10为底的对数,那么需要用log10()函数. ...
- Eclipse导入到web项目没有run on server
由于以前的项目都是用myeclipse开发的,现在要换成eclipse来开发.但是项目导入到eclipse中发现该项目并不是web项目,也不能部署到tomcat里面去. 现在解决了这个问题了. ...
- (笔记)Mysql命令show databases:显示所有数据库
show databases命令用于显示所有数据库. show databases命令格式:show databases; (注意:最后有个s) 例如:mysql> show databases ...
- C语言中的数组与字符串
1. 数组与指针: 对于数组,需要注意两点:1, C语言中只有一维数组, 而且数组的大小必须在编译期就作为一个常数确定下来: 2. 对于一个数组,我们只能做两件事:确定数组的大小 和 获得指向该数组下 ...