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 ...
随机推荐
- 【.Net】Thread.Start()与ThreadPool.QueueUserWorkItem()的区别
百度搜到的靠前的几篇文章,都是写了两种API的使用实例,但并没有说清两者的具体差别. 直接上stackoverflow搜才是正确的姿势.(想上谷歌,然而十/九_大|期间VPN各种被墙,就很气) 参考: ...
- WPF中自定义路由事件
public class MyButtonSimple: Button { // Create a custom routed event by first registering a RoutedE ...
- Instant Django 1.5 Application Development Starter
Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic d ...
- IBatis批量插入数据
IBatis插入注意,数据量比较多的花,需要分批插入,策略是dao里面控制插入批次,mapper里面批量插入即可 @Override public Long insertBatch(List<W ...
- Android——Service装取数据
在Service里面装数据,从Activity里面用serviceConnection取数据 xml <?xml version="1.0" encoding="u ...
- 非常有用的15个Linux 服务器监控命令
如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Linux 系统管理员. 有些 Linux 发行版会提供 GUI 程序来进行系统的监控,例如 ...
- hbase源码系列(四)数据模型-表定义和列族定义的具体含义
hbase是一个KeyValue型的数据库,在<hbase实战>描述它的逻辑模型[行键,列族,列限定符,时间版本],物理模型是基于列族的.但实际情况是啥?还是上点代码吧. HTableDe ...
- 记录第一次使用jni编译so包的入门操作
1.配置 下载自己相对应的ndk平台版本后配置到studio 在local.properties加入路径 在gradle.properties文件添加 2.创建工具类(注意方法都是native的) 3 ...
- 【转】【Mac】invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library
异常原因 我在昨天升级了 macOX Sierra,悲剧的是,今天我发现git命令无法执行,homebrew也无法使用,这种情景我在升级OS X El Capitan也遇到过一次,完整异常提示如下: ...
- 【AndroidManifest.xml详解】Manifest属性之sharedUserId、sharedUserLabel
http://blog.csdn.net/wirelessqa/article/details/8581652 android:sharedUserId 当APK安装的时候,userid这个标志就会产 ...