Hash命令轻松尝试,数据类型

redis笔记——–Jedis使用,redis——–jedis

新春之内,重做一下系统,结果想用redis时候大脑一片空白。md,无法忍,再学贰次

redis安装和运维就掩没了

一.策画干活

 1.redis -cli -p 6379

美高梅开户网址 1

2.eclipse中新建项目,并导入jedis相关包

美高梅开户网址 2

3.测试jedis连通性

美高梅开户网址 3

 

二.Jedis常用API (哈希)

1.基础的key  value

美高梅开户网址 4

 

美高梅开户网址 5

 

美高梅开户网址 6

 存粤语,取多少时在eclipse调节台会突显中文,但是在linux上回出现汉语乱码难题(其实不是乱码,只是否大家存的普通话展现)。使用redis-cli 
–raw走入 就不会现出上述难题

2.Hash:总体来讲KV方式不改变,但V是贰个键值对

(1)hset
陈诉:将哈希表key中的域田野同志的值设为value。假如key不真实,二个新的哈希表被创制并实行HSET操作。要是域田野先生已经存在于哈希表中,旧值将被掩瞒。
参数:key field value
再次回到值:假若田野(field)是哈希表中的三个新建域,並且值设置成功,再次来到1。假使哈希表中域田野同志已经存在且旧值已被新值覆盖,再次回到0

美高梅开户网址 7

jedis.hset("key1", "field1", "field1-value"); 
  jedis.hset("key1", "field2", "field2-value"); 
  String content=jedis.hget("key1","field1");//hget的使用
  System.out.println(content);

 (2)hmset
汇报:同有的时候间将多少个田野(field) –
value(域-值)对设置到哈希表key中。此命令会覆盖哈希表中已存在的域。如果key不设有,贰个空哈希表被创建并实践HMSET操作。
参数:key field value [field value …]
重返值:如若命令实行成功,重返OK。当key不是哈希表(hash)类型时,再次回到叁个不当。

 美高梅开户网址 8

 Map map = new HashMap(); 
  map.put("field1", "field1-value"); 
  map.put("field2", "field2-value"); 
  jedis.hmset("key1", map); 
  List<String> list = jedis.hmget("key1","field1");//hmget
        System.out.println(list);

 (3)再次来到 key
钦定的哈希聚焦具备的字段和值。重回值中,种种字段名的下八个是它的值,所以再次回到值的长短是哈希集大小的两倍

 美高梅开户网址 9

(4)hdel

美高梅开户网址 10

 (5)hlen

 美高梅开户网址 11

(6)hexists

美高梅开户网址 12

(7)hkeys/hvals

hgetall同不常间重返哈希表里的键和值,hkeys重回哈希表里的键,hvals重返哈希表里的值

美高梅开户网址 13

(8)hincrby|hincrbyfloat

美高梅开户网址 14

 

 (9)hsetnx

将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field
不存在。

若域 field 已经存在,该操作无效。

如果 key 不设有,贰个新哈希表被创立并实践 hsetnx 命令。

返回值:
设置成功,重临 1 。 假使给定域已经存在且尚未操作被实践,重返 0

美高梅开户网址 15

美高梅开户网址 16

三.Redis事务

 Discard 撤废事务

Exec 执行

multi 开启事务

unwatch 裁撤 watch命令对富有key的监视

watch
监视三个或两个key,即使在业务实施从前,这么些key被别的命令更改,那么事务将被堵塞

redis事务阶段:

(1)开启:以multi开启八个职业

(2)入队

(3)推行:由exec命令触发事务

redis事务不保障原子性:redis同贰个业务中只要一条命令试行倒闭,其后的一声令下仍会被实施,未有回滚

 美高梅开户网址 17

四.Jedis主从复制

public class TestMS {
 public static void main(String[] args) {
  Jedis jedis_M = new Jedis("192.168.172.128",6379);
  Jedis jedis_S = new Jedis("192.168.172.128",6380);
 System.out.println(jedis_M.ping());
 System.out.println(jedis_S.ping());
  jedis_S.slaveof("192.168.172.128",6379);

  jedis_M.set("class","1122V2");

  String result = jedis_S.get("class");
  System.out.println(result);
 }
}

 尽管现身NULL,别慌。因为内部存储器速度太快了,等一会在试行一遍就好了

五.JedisPool

package com.test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisPoolUtil 
{
 private static volatile JedisPool jedisPool = null;

 private JedisPoolUtil(){}

 public static JedisPool getJedisPoolInstance()
 {
  if(null == jedisPool)
  {
   synchronized (JedisPoolUtil.class)
   {
    if(null == jedisPool)
    {
     JedisPoolConfig poolConfig = new JedisPoolConfig();
     poolConfig.setMaxActive(1000);
     poolConfig.setMaxIdle(32);
     poolConfig.setMaxWait(100*1000);
     poolConfig.setTestOnBorrow(true);

     jedisPool = new JedisPool(poolConfig,"127.0.0.1",6379);
    }
   }
  }
  return jedisPool;
 }

 public static void release(JedisPool jedisPool,Jedis jedis)
 {
  if(null != jedis)
  {
   jedisPool.returnResourceObject(jedis);
  }
 }

}

 

package com.test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class TestPool {

 public static void main(String[] args) {
  JedisPool jedisPool = JedisPoolUtil.getJedisPoolInstance();
  JedisPool jedisPool2 = JedisPoolUtil.getJedisPoolInstance();

  System.out.println(jedisPool == jedisPool2);

  Jedis jedis = null;
  try {
   jedis = jedisPool.getResource();
   jedis.set("aa", "bb");
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   JedisPoolUtil.release(jedisPool, jedis);
  }
 }
}

 

新岁以内,重做一下种类,结果想用redis时候大脑一片空白。md,不可能忍,再学贰次redis安装和开发银行…

Hash命令

上次大家说了redis中的String命令,此次来回顾的介绍下Hash命令。Hash命令能够积存八个键值对中间的映照,和字符串类似,散列存款和储蓄的值不只能够是字符串也足以是数值。并且大家也得以对散列存款和储蓄的数字施行自增操作依然自减操作。

Redis 哈希(Hash) 命令

下表列出了 redis hash 基本的连锁命令:

Hash命令轻松尝试,数据类型。1> hdel 命令:删去贰个或八个哈希表字段

格式:HDEL key field2
[field2]

再次来到值:被成功删除字段的数码,不包涵被忽视的字段。

2> hexists 命令:查阅哈希表 key 中,钦点的字段是或不是存在

格式:HEXISTS key field

再次来到值:若是哈希表含有给定字段,重返 1 。 倘诺哈希表不含有给定字段,或
key 不设有,再次来到 0 。

3> hget 命令:收获存款和储蓄在哈希表中内定字段的值

格式:HGET key field

重回值:再次来到给定字段的值。倘诺给定的字段或 key 不设有的时候,再次回到 nil 。

4> hgetall 命令:赢得在哈希表中内定 key 的兼具字段和值

格式:HGETALL key

重返值:以列表情势重返哈希表的字段及字段值。 若 key
不设有,再次回到空驶列车表。

5> hincrby 命令:为哈希表 key 中的内定字段的整数值加上增量
increment

格式:HINCRBY key field
increment

重返值:实践 HINCRBY 命令之后,哈希表中字段的值。

6> hincrbyfloat 命令:为哈希表 key
中的钦定字段的浮点数值加上增量 increment

格式:HINCRBYFLOAT key field
increment

重返值:实践 Hincrbyfloat 命令之后,哈希表中字段的值。

7> hkeys 命令:获得具备哈希表中的字段

格式:HKEYS key

重临值:包蕴哈希表中具有字段的列表。 当 key 海市蜃楼时,再次回到二个空驶列车表。

8> hlen 命令:获取哈希表中字段的数码

格式:HLEN key

重临值:哈希表中字段的数据。 当 key 空头支票时,重返 0 。

9> hmget 命令:拿到具备给定字段的值

格式:HMGET key field1
[field2]

重临值:八个富含多少个给定字段关联值的表,表值的排列顺序和点名字段的呼吁顺序一样。

10> hmset 命令:还要将多少个 田野(field)-value (域-值)对安装到哈希表
key 中

格式:HMSET key field1 value1 [field2 value2
]

再次回到值:借职责令实施成功,再次来到 OK 。

11> hset 命令:将哈希表 key 中的字段 田野(field) 的值设为 value

格式:HSET key field value

重返值:借使字段是哈希表中的五个新建字段,何况值设置成功,再次来到 1 。
假使哈希表中域字段已经存在且旧值已被新值覆盖,再次回到 0 。

12> hsetnx 命令:唯有在字段 田野同志不设一时,设置哈希表字段的值

格式:HSETNX key field value

重临值:设置成功,重临 1 。 假诺给定字段已经存在且并未有操作被实施,重返0 。

13> hvals 命令:收获哈希表中全数值

格式:HVALS key

重临值:多少个包罗哈希表中全数值的表。 当 key 不设一时,重返贰个空表。

14> hscan 命令:迭代哈希表中的键值对

格式:HSCAN key cursor [MATCH pattern] [COUNT
count]

简介

美高梅开户网址 ,  Redis
Hashes是字符串字段和字符串值之间的照射,所以它们是圆满的表示对象(eg:二个盛名,姓,年龄等性情的客商)的数据类型。新建二个hash对象时初步是用zipmap(又称作small
hash)来积累的。这几个zipmap其实并非hash
table,不过zipmap比较不荒谬的hash达成能够节省不胜枚举hash自个儿必要的局地元数据存款和储蓄费用。即便zipmap的拉长,删除,查找都是O(n),然而出于常常对象的田野数量都不太多。所以利用zipmap也是神速的,也便是说增多删减平均照旧O(1)。纵然田野恐怕value的轻重缓急超越一定范围后,Redis会在里边自行将zipmap替换到健康的hash完结.。能够选取如下配置

 # Hashes are encoded in a special way (much more memory efficient) when they
 # have at max a given numer of elements, and the biggest element does not
 # exceed a given threshold. You can configure this limits with the following
 # configuration directives.
 hash-max-zipmap-entries 512
 hash-max-zipmap-value 64

操作命令

  1. hset: 将哈希表中的key 中的域值 设置为 value ; 假使key filed 都子虚乌有,设置的时候正是新建设构造的进度。存在正是将value 修改为新值。
    时间复杂度为O;hset key 田野(field) value;
  2. hget: 依照给定的key filed 得到值。 若是不设有 返回nil ;
    时间复杂度O;hget key filed 获得给定的域值。荒诞不经即重返nil.
  3. hgetall: 重回给定的哈希值中的全数值。如若key不设有
    再次回到空驶列车表不是回到nil. 时间复杂度O, N 为哈希表的尺寸。hgetall key.
  4. hdel:
    删除哈希表key中的一个活多少个钦定域。空中楼阁的域将被忽略掉。时间复杂度O,
    N
    为要刨除的域的多寡。再次回到值时被移除的域值的数据。不分包被忽略的域值。
  5. hexists:查看哈希表key中某些域值是不是留存。时间复杂度是O,如若存在重临1
    不设有再次来到0.hexists key 田野同志 .
  6. hincrby:实施自增 域中对应的值需为数字。不然会出错。
    时间复杂度O.再次来到值 是实行hincrby key 田野先生 increment .
  7. hincrbyfloat:同上,不过是自增为浮点数。
  8. hkeys: 再次回到钦定key中的全体域。
    时间复杂度是O,N为哈希表的轻重缓急。当key不设临时回来空驶列车表。hkeys
    key
  9. hlen:重回的是哈希表中 key 域的多少
    。时间复杂度是O.key官样文章的时,再次回到的是0.
  10. hmget:再次回到哈希表中key。一个要么四个域值。
    不设有重回nil值。时间复杂度是O. hmget key filed filed filed.
  11. hmset: 将三个filed-value值 设置到哈希表中
    此命令会覆盖已经存在的哈希表中的域值。 时间复杂度是O. 实施成功重返ok
    :hmset key filed value filed value filed value .
  12. hsetnx: 将hashe表中的filed 值设置为value 仅filed 值空头支票该操作才使得。设置成功重临1。时间复杂度是O.给定的域存在 重临0 。
  13. hvals:再次回到哈希表中key中持有的域值。 时间复杂度是O. 荒诞不经的key
    重临一个空表。hvals key

操作

  1. hset

HSET key field value

将哈希表key中的域field的值设为value。如果key不设有,三个新的哈希表被成立并打开hset操作。假如域field早就存在于哈希表中,旧值将被蒙蔽。

  1. hget

HGET key field

再次来到哈希表key中内定的田野的值。

 

  1. hsetnx 

HSETNX key field value

将哈希表key中的域field的值设置为value,当且仅当域field不存在。若域field现已存在,该操作无效。借使key不设有,多少个新哈希表被成立并试行hsetnx命令。

  1. hmset

HMSET key field value [field value ...]

再者将四个field - value(域-值)对安装到哈希表key中。此命令会覆盖哈希表中已存在的域。如若key不真实,一个空哈希表被创设并实施hmset操作。

 

  1. hmget

HMGET key field [field ...]

重返哈希表key中,贰个或多少个给定域的值。假使给定的域不真实于哈希表,那么重返贰个nil值。因为不设有的key被作为二个空哈希表来管理,所以对二个不真实的key开展hmget操作将再次来到三个只含有nil值的表。

 

  1. hgetall

HGETALL key

回去哈希表key中,全体的域和值。在重返值里,紧跟每一种域名(田野同志name)之后是域的值(value),所以重回值的长度是哈希表大小的两倍。

 

  1. hdel

HDEL key field [field ...]

除去哈希表key中的四个或四个钦定域,不设有的域将被忽视。

 

  1. hlen

HLEN key

回来哈希表key对应的田野的数码。

 

  1. hexists

HEXISTS key field

翻开哈希表key中,给定域field是否留存。

 

  1. hkeys

HKEYS key

获取哈希表中key对应的富有田野。

 

  1. hvals

HVALS key

得到哈希表中key对应的有着values。

 

  1. hincrby

为哈希表key中的域field的值加上增量increment。增量也足感觉负数,相当于对给定域举办减法操作。假诺key空中楼阁,一个新的哈希表被创设并实行hincrby命令。借使域field海市蜃楼,那么在实践命令前,域的值被伊始化为0。对二个积攒字符串值的域field施行hincrby命令将招致二个错误。本操作的值限制在六十四位(bit)有标识数字代表之内。

命令尝试

美高梅开户网址 18命令尝试美高梅开户网址 19一声令下尝试美高梅开户网址 20微信民众号二维码.jpg美高梅开户网址 21星辰二维码.jpg

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图