命令參考: 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() {
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");