redis - java 客戶端使用

命令參考: http://redisdoc.com/ java

教程: http://redisinaction.com/ redis

 

1.準備.下載jar 包spring

 

  <dependency>數據庫

               <groupId>redis.clients</groupId>apache

               <artifactId>jedis</artifactId>安全

               <version>2.7.3</version>服務器

          </dependency>app

<dependency>ide

     <groupId>org.apache.commons</groupId>ui

     <artifactId>commons-pool2</artifactId>

     <version>2.4.2</version>

</dependency>

    java 客戶端還有: Redis4j , jedis , jRedis ,   

2. 示例

 

package redisDemo;

 

import redis.clients.jedis.Jedis;

 

public class Test1 {

      public static void main(String[] args) {

          //鏈接

          Jedis jedis = new Jedis( "127.0.0.1",6379);

          //存值

          jedis.set( "foo", "bar"); 

          //取值

          String foo = jedis.get( "foo");

          //刪除

          jedis.del( "foo");

         

      }

}

 

 

1. Jeids 鏈接

1. 簡單鏈接

 

Jedis jedis = new Jedis( "127.0.0.1",6379);

2. 使用鏈接池鏈接 redis( 依賴 apache 下的 common-pool2.jar包)

 

// 讀取配置文件,redis.properties(如:redisDemo.redis這樣表示在redisDemo包下)

ResourceBundle bundle = ResourceBundle.getBundle("redis" );

// 設置配置對象

JedisPoolConfig config = new JedisPoolConfig();

config.setMaxTotal(Integer. valueOf(bundle.getString("redis.pool.maxActive")));

config.setMaxIdle(Integer. valueOf(bundle.getString("redis.pool.maxIdle")));

config.setMaxWaitMillis(Long. valueOf(bundle.getString("redis.pool.maxWait")));

config.setTestOnBorrow(Boolean. valueOf(bundle.getString("redis.pool.testOnBorrow")));

config.setTestOnReturn(Boolean. valueOf(bundle.getString("redis.pool.testOnReturn")));

// 建立鏈接池

JedisPool jedisPool = new JedisPool( config, bundle.getString( "redis.ip"),

            Integer. valueOf(bundle.getString("redis.port")));

// 從鏈接池中取得對象

Jedis jedis = jedisPool .getResource();

jedis.get( "foo");

// 釋放對象

jedis.close();

 

3. 建立共享鏈接,讓多臺redis同步

 

//準備兩個共享的 redis服務器

JedisShardInfo jedisShardInfo1 = new JedisShardInfo( "192.168.0.1",6379); 

JedisShardInfo jedisShardInfo2 = new JedisShardInfo( "192.168.0.2",6379);

List<JedisShardInfo> list = new ArrayList<JedisShardInfo>(); 

list.add( jedisShardInfo1); 

list.add( jedisShardInfo2); 

 

JedisPoolConfig config = new JedisPoolConfig();

// config.set....

//建立共享池

ShardedJedisPool shardedPool = new ShardedJedisPool( config, list);

//建立共享對象

ShardedJedis jedis = shardedPool.getResource(); 

//crud ....

 

2.存值

 

1. 單值保存

   

jedis.set("foo","bar");

2.  內容追加

 

jedis.append("foo", "appendValue");

3. 多值保存

 

/**

* mset 至關於

* jedis.set("name","minxr");

* jedis.set("jarorwar","閔曉榮");

*/

jedis.mset( "name", "minxr", "jarorwar", "閔曉榮");           

System.out.println(jedis.mget("name","jarorwar"));

 

4. 保存map

 

 Map<String, String> user = new HashMap<>();

 user.put( "name", "mary");

 user.put( "age", "35");

 jedis.hmset( "mary", user);

 

5. 保存 list

 

//先向list中存放二條數據

jedis.lpush("list","spring");

jedis.lpush("list","struts");

 

6. 保存set

 

//保存值【minxr,jarorwar】到set中,key 爲【sname】

jedis.sadd("sname","minxr");

jedis.sadd("sname","jarorwar"); 

 

3.取值

 

1. 取出單個值

 

String foo = jedis.get( "foo");

     

 

2.取出多個值以list返回

 

jedis.mget( "name","jarorwar" ) 

 

3.從map中取值

 

jedis.hmget("mary" , "age" ,"name" ) 以list返回

jedis.hlen("user") 計算map中存值的個數

jedis.exists("user" ); 是否存在該值

jedis.hkeys("user")  返回map對象中全部的key

jedis.hvals("user")   返回map對象中全部的value

 

4.從list中取值

 

//第一個是key,第二個是起始位置,第三個是結束位置,jedis.llen獲取長度 -1表示取得全部

jedis.lrange("list",0,-1)

 

5.從set中取值

 

//獲取全部加入的value

jedis.smembers("set") 

//判斷minxr是不是sname集合的元素

jedis.sismember("set", "minxr")

//隨機獲取兩個集合元素

jedis.srandmember("set",2)

//返回集合的元素個數

 jedis.scard("sname")

 

6.經過通配符取得

 

返回當前庫中全部的key

jedis.keys("*") 或 jedis.keys("*name")

 

 

4.刪除

1.刪除單值

刪除key爲foo的對象,刪除成功返回1 刪除失敗(或者不存在)返回 0

jedis.del( "foo");

2.從map中刪除

 

//在"user"中的刪除key爲 pwd的對象

jedis.hdel( "user", "pwd");

3.從 set中刪除

 

jedis.srem("set","minxr");

 

4.從list中刪除

 

//根據參數 count 的值,移除列表中與參數 value 相等的元素。

jedis.lrem(key, count, value)

 

5.持久化與生存時間

 

 

//經過此方法,能夠指定key的存活(有效時間) 時間爲秒,下例設置:【timekey】的值爲【min】且有效時間爲<=10秒

jedis.setex("timekey", 10, "min");

 

//返回給定key的有效時間,若是是-1則表示永遠有效

jedis.ttl("timekey ")

//以毫秒爲單位獲取剩餘時間的到期鍵

jedis.pttl( "time");

 

//在不刪除key的狀況下,移除key的生存時間,讓key從新成功一個【持久的】key

jedis.persist( "persistKey");

//時間是在Unix時間戳格式

jedis.expireAt( "unixTime", 1000L);

 

//設置【limitKey】的生存時間爲10秒。或從新設定【limitKey】的生存時間爲10秒

jedis.expire( "limitKey", 10);

 

 

 

6.訂閱發佈

 

訂閱

【rchat】就是訂閱的頻道,能夠指定多個,當運行了下面的程序後,就開啓了一個線程並始終監聽着指定的頻道

jedis.subscribe(new JedisPubSub() {

      @Override

      public void onMessage(String channel, String message) {

            System. out.println( message);

      }

      

}, "rchat" );

 

發佈

//返回值表示訂閱的人數,0表示沒有人訂閱    

jedis.publish( "rchat", "hello my name is jack");

 

控制檯

hello my name is jack

 

7.備份

 

//備份當前數據,生成一個.rdb的文件

jedis.configGet( "dir");

jedis.bgsave();

 

8.恢復

 

要恢復Redis的數據只需移動 Redis 的備份文件(dump.rdb)到 Redis 目錄,而後啓動服務器

//爲了獲得你的 Redis 目錄,使用配置命令         

jedis.configGet( "dir");

 

9.安全

 

爲reids 設置密碼,讓相關的任何客戶端都須要在執行命令以前進行身份驗證

//默認狀況下,此屬性爲空,表示沒有設置密碼

jedis.configGet( "requirepass");

//設置密碼

jedis.configSet( "requirepass", "123456");

//設置密碼,若是客戶端運行命令沒有驗證,會提示(錯誤)NOAUTH,須要經過驗證,經過下面取得權限

jedis.auth( "123456");

 

 

10.其它操做

 

 

//重命名key

jedis.rename("timekey","time")

//移動鍵到另外一個數據庫

jedis.move( "user", 1);

//返回存儲在鍵的數據類型的值

jedis.type( "key");

相關文章
相關標籤/搜索