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的更多相关文章

  1. Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash

    引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...

  2. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  3. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

  4. Redis学习笔记(二)-key相关命令【转载】

    转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...

  5. Redis学习笔记(三)Redis支持的5种数据类型的总结

    继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...

  6. Redis 学习笔记4: Redis 3.2.1 集群搭建

    在CenOS 6.7 linux环境下搭建Redis 集群环境 1.下载最新的Redis版本 本人下载的Redis版本是3.2.1版本,下载之后,解压,编译(make): 具体操作可以参考我的博文:R ...

  7. Redis学习笔记(1)——Redis简介

    一.Redis是什么? Remote Dictionary Server(Redis) 是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value ...

  8. redis 学习笔记-cluster集群搭建

    一.下载最新版redis 编译 目前最新版是3.0.7,下载地址:http://www.redis.io/download 编译很简单,一个make命令即可,不清楚的同学,可参考我之前的笔记: red ...

  9. Redis学习笔记(二) Redis 数据类型

    Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...

随机推荐

  1. 此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求

    FirFox打开80以外的端口,会弹出以下提示: “此地址使用了一个通常用于网络浏览以外的端口.出于安全原因,Firefox 取消了该请求.”. 解决方法如下: 在Firefox地址栏输入about: ...

  2. Cannot find the Word template:WordToRqm.dot

    方案一: 如果你的word中没有“开发工具”,就在“选项”中找到“自定义功能区”,右侧列表中找到“开发工具”,添加. 转到“开发工具”选项卡,com加载项,里面有个关于Powerdesigner的,反 ...

  3. mui问题

    2016.7.27 1.当你的html不在文件夹的时候 引路径就不要加../   2.当用svn提交代码的时候要先右键项目->版本管理->与资源库同步,查看你的修改的地方和原来部署上去的文 ...

  4. 2.EasyUI学习总结(二)——easyloader分析与使用(转载)

    本文转载自:http://www.cnblogs.com/haogj/archive/2013/04/22/3036685.html 使用脚本库总要加载一大堆的样式表和脚本文件,在easyui 中,除 ...

  5. .NET LINQ 筛选数据

    筛选数据      筛选指将结果集限制为只包含那些满足指定条件的元素的操作. 它又称为选择. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 OfType ...

  6. excel删除重复数据

    1.点击任意单元格2.选择菜单栏的数据-->删除重复项 -->自定义重复

  7. sql单表中某一字段重复,取最近3条或几条数据

    order by a.uid,a.id; sql查询语句,针对需求:一个表中某一字段是有重复的数据,针对该字段相同的值只取最近的3条或要求的几条: --记录铭心!

  8. T-SQL 基础学习 03

    局部变量 在T-SQL中,局部变量的名称必须以标记@作为前缀 语法 DECLARE @变量名数据类型 局部变量的赋值 方法一 SET @变量名 = 值 方法二 SELECT @变量名 = 值 SET和 ...

  9. 如何判断css是否加载完成

    要判断这个 CSS 文件是否加载完毕,各个浏览器的做法差异比较大,这次要说IE浏览器做的不错,我们可以直接通过onload方法来处理CSS加载完成以后的处理: // 代码节选至seajs functi ...

  10. python中threading的用法

    摘自:http://blog.chinaunix.net/uid-27571599-id-3484048.html 以及:http://blog.chinaunix.net/uid-11131943- ...