Redis学习笔记(3)-Hash
package cn.com; import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set; import ch.qos.logback.core.net.SyslogOutputStream;
import redis.clients.jedis.Jedis; public class Redis_Hash { public static Jedis redis = new Jedis("localhost", 6379);// 连接redis public static void main(String [] args){
hdel();
} /**
* HDEL key field [field ...]
* 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
* */
public static void hdel(){
redis.flushDB();//清除数据 redis.hset("user", "id", "1");
redis.hset("user", "name", "liliang");
redis.hset("user", "age", "18");
System.out.println("==========删除key前数据===========");
List<String> users=redis.hvals("user");
for(String u:users){
System.out.println(u);
} System.out.println("==========删除key后数据===========");
redis.hdel("user","age");//删除key;可以是多个key
List<String> users2=redis.hvals("user");
for(String u:users2){
System.out.println(u);
}
}
/**
* 返回哈希表 key 中所有域的值。
* 返回值:key 不存在返回空
* */
public static void hvals(){
redis.flushDB();//清除数据
redis.hset("user", "id", "1");
redis.hset("user", "name", "liliang");
redis.hset("user", "age", "18");
List<String> users=redis.hvals("user");
for(String u:users){
System.out.println(u);
}
} /**将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。
*若域 field 已经存在,该操作无效。
*如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令
**/
public static void hsetnx(){
redis.flushDB();//清除数据
redis.hsetnx("user","age", "18");
String age1=redis.hget("user", "age");
System.out.println("age1:"+age1); //key=user;field=age ;存在在这是则无效
redis.hsetnx("user","age", "19");
String age2=redis.hget("user", "age");
System.out.println("age2:"+age2);
}
/**
*为哈希表 key 中的域 field 的值加上增量 increment 。
*增量也可以为负数,相当于对给定域进行减法操作。
*如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
*如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。
*对一个储存字符串值的域 field 执行 HINCRBY 命令将造成一个错误。
*本操作的值被限制在 64 位(bit)有符号数字表示之内。
* */
public static void hincrby(){
redis.flushDB();//清除数据 //field 不存在初始化field 为0
redis.hincrBy("user", "age", 18);
String age1=redis.hget("user", "age");
System.out.println("age1:"+age1); //对age field 进行crby 1操作
redis.hincrBy("user", "age", 1);
String age2=redis.hget("user", "age");
System.out.println("age1:"+age2);
} /**
* 方法与hincrBy 用户法一样;
* 此方法是操作Float 类型数据
*
* */
public static void hincrByFloat(){
redis.flushDB();//清除数据 //field 不存在初始化field 为0
redis.hincrByFloat("user", "age", 18);
String age1=redis.hget("user", "age");
System.out.println("age1:"+age1); //对age field 进行crby 1操作
redis.hincrByFloat("user", "age", 1.5);
String age2=redis.hget("user", "age");
System.out.println("age1:"+age2);
} /**
* hset 将哈希表 key 中的域 field 的值设为 value 。
* hget 返回哈希表 key 中给定域 field 的值。
* hgetAll 返回哈希表 key 中,所有的域和值。
*
* */
public static void hset_hget_hgetAll(){
redis.flushDB();//清除数据
redis.hset("user", "id", "1");
redis.hset("user", "name", "liliang");
redis.hset("user", "age", "18"); System.out.println("==========hget============");
System.out.println(redis.hget("user", "id"));
System.out.println(redis.hget("user", "name"));
System.out.println(redis.hget("user", "age")); System.out.println("=========hgetAll===========");
Map<String,String> map=redis.hgetAll("user");
System.out.println("id:"+map.get("id"));
System.out.println("name:"+map.get("name"));
System.out.println("age:"+map.get("age"));
} /**
* HMSET key field value [field value ...]
* 同时将多个 field-value (域-值)对设置到哈希表 key 中。
* 此命令会覆盖哈希表中已存在的域。
* 如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。
* */
public static void hmset_hmget(){
redis.flushDB();//清除数据
Map<String,String> map=new HashMap<String,String>();
map.put("id","1");
map.put("name","liliang");
map.put("age","18");
redis.hmset("user", map); System.out.println("======HMGET==========");
List<String> list=redis.hmget("user","id","name","age");
for(String s:list){
System.out.println("s:"+s);
}
} /**
* HLEN key
* 返回哈希表 key 中域的数量。
* */
public static void hlen(){
redis.flushDB();//清除数据
Map<String,String> map=new HashMap<String,String>();
map.put("id","1");
map.put("name","liliang");
map.put("age","18");
redis.hmset("user", map); Long length=redis.hlen("user");
System.out.println("length:"+length);
} /**
* HKEYS key
*返回哈希表 key 中的所有域。
* */
public static void hkeys(){
redis.flushDB();//清除数据
Map<String,String> map=new HashMap<String,String>();
map.put("id","1");
map.put("name","liliang");
map.put("age","18");
redis.hmset("user", map); Set<String> set=redis.hkeys("user");
for(String s:set){
System.out.println("s:"+s);
}
}
}
Redis学习笔记(3)-Hash的更多相关文章
- Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash
引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...
- redis 学习笔记(6)-cluster集群搭建
上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...
- Redis学习笔记4-Redis配置详解
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...
- Redis学习笔记(二)-key相关命令【转载】
转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...
- Redis学习笔记(三)Redis支持的5种数据类型的总结
继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...
- Redis 学习笔记4: Redis 3.2.1 集群搭建
在CenOS 6.7 linux环境下搭建Redis 集群环境 1.下载最新的Redis版本 本人下载的Redis版本是3.2.1版本,下载之后,解压,编译(make): 具体操作可以参考我的博文:R ...
- Redis学习笔记(1)——Redis简介
一.Redis是什么? Remote Dictionary Server(Redis) 是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value ...
- redis 学习笔记-cluster集群搭建
一.下载最新版redis 编译 目前最新版是3.0.7,下载地址:http://www.redis.io/download 编译很简单,一个make命令即可,不清楚的同学,可参考我之前的笔记: red ...
- Redis学习笔记(二) Redis 数据类型
Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...
随机推荐
- video.js使用教程API
videojs就提供了这样一套解决方案,他是一个兼容html5的视频播放工具,早期版本兼容所有浏览器,方法是:提供三个后缀名的视频,并在不支持html5的浏览器下生成一个flash的版本. 最新的3. ...
- Java设计模式之行为型模式
行为型模式共11种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 策略模式:策略模式的决定权在用户,系统本身提供不同 ...
- .NET LINQ 元素操作
元素操作 元素操作从一个序列返回单个特定元素. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 ElementAt 返回集合中指定索引处的元素. ...
- Tensorflow二分类处理dense或者sparse(文本分类)的输入数据
这里做了一些小的修改,感谢谷歌rd的帮助,使得能够统一处理dense的数据,或者类似文本分类这样sparse的输入数据.后续会做进一步学习优化,比如如何多线程处理. 具体如何处理sparse 主要是使 ...
- 关于Qt creator 无法使用fcitx输入中文的问题折腾
环境: 系统ubuntu16.04amd64,qt5.4.2 安装完qt5.4后,在编写代码时,发现无法输入中文,离开qt creator 就立刻正常.原因似乎是qt对fcitx支持. 解决方法我是参 ...
- 解决 SVN Skipped 'xxx' -- Node remains in conflict
svn 提交报错 提交命令: svn update 提示代码: Skipped 'ApiController.php' -- Node remains in conflict At revision ...
- Android真机调试 Android.Util.AndroidRuntimeException: You cannot combine custom titles with other title features
参考连接:http://blog.csdn.net/scyatcs/article/details/9003285 Android.Util.AndroidRuntimeException: You ...
- Web开发基本准则-55实录-缓存策略
续上篇<Web开发基本准则-55实录-Web访问安全>. Web开发基本准则-55实录-缓存策略 郑昀 创建于2013年2月 郑昀 最后更新于2013年10月26日 提纲: Web访问安全 ...
- OpenCv全景图像拼接
http://my.oschina.net/xiaot99/blog/226589 http://blog.csdn.net/chenjiazhou12/article/details/2282548 ...
- NewBluePill源码学习
NewBluePill的源码也看的差不多了,一直说等有时间了再写学习的一些心得,拖来拖去弄到现在了,时间不是等来的,慢慢开始吧. 0x00 初识硬件虚拟化 硬件虚拟化对大数人来讲还是比较陌生. ...