本文目錄一覽:
- 1、java 中redis 如何使用?
- 2、怎麼在java中使用redis
- 3、怎樣使用redis緩存,java代碼
- 4、java操作redis有哪些方法
- 5、redis client使用小結
- 6、redis java 有什麼用
java 中redis 如何使用?
這是我之前寫的代代碼,可以參考一下:
import java.util.Set;
import com.google.gson.Gson;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class App {
public static void main(String[] args) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(5);
config.setMaxWaitMillis(10000);
config.setTestOnBorrow(false);
JedisPool jedisPool = new JedisPool(config, “127.0.0.1”, 6379);
Jedis jedis = jedisPool.getResource();
jedis.flushDB();
jedis.set(“name”, “Tom”);
User user = new User(1, “Tom”, “User”);
Gson gson = new Gson();
String json = gson.toJson(user);
jedis.set(“user1”, json);
SetString keys = jedis.keys(“*”);
for (String key : keys) {
System.out.println(key);
}
}
}
如果有疑問,可以隨時追問。
怎麼在java中使用redis
public class RedisListJava { public static void main(String[] args) { //連接本地的 Redis 服務 Jedis jedis = new Jedis(“localhost”); System.out.println(“Connection to server sucessfully”); //存儲數據到列表中 jedis.lpush(“tutorial-list”, “Redis”); jedis.lpush(“tutorial-list”, “Mongodb”); jedis.lpush(“tutorial-list”, “Mysql”); // 獲取存儲的數據並輸出 ListString list = jedis.lrange(“tutorial-list”, 0 ,5); for(int i=0; ilist.size(); i++) { System.out.println(“Stored string in redis:: “+list.get(i)); } }}
怎樣使用redis緩存,java代碼
應用Redis實現數據的讀寫,同時利用隊列處理器定時將數據寫入mysql。
同時要注意避免衝突,在redis啟動時去mysql讀取所有表鍵值存入redis中,往redis寫數據時,對redis主鍵自增並進行讀取,若mysql更新失敗,則需要及時清除緩存及同步redis主鍵。
這樣處理,主要是實時讀寫redis,而mysql數據則通過隊列非同步處理,緩解mysql壓力,不過這種方法應用場景主要基於高並發,而且redis的高可用集群架構相對更複雜,一般不是很推薦。
java操作redis有哪些方法
電腦安裝Redis,然後通過JRedis(jar包)下的JRedis redis = new JRedis(address,port);就可以操作了,比連接資料庫還簡單,如果是windows的話 建議裝虛擬機用linux安裝redis,其他的只要你懂redis,用java操作redis太簡單了
redis client使用小結
本文記錄了使用redis client的基本配置和連接超限的問題
java端的redis client使用的是jedis,他的連接池實現是基於Apache Commons Pool 2,配置也參考的GenericObjectPoolConfig,分別是minIdle,maxIdle,maxTotal,其中maxTotal包含了活躍和非活躍的連接總數
另外timeout是在Jedis的構造函數里指定的,他同時指定了connectionTimeout(最大連接時間)和soTimeout(最大響應時間 )
客戶端配置就上面幾個,用起來還是挺簡單的,但是用的過程中還是會遇到一些問題,比如ERR max number of clients reached,有可能會是以下幾個原因:
redis server最大連接數的配置由maxclients決定,2.6以後的版本默認值是10000,如果設置的值超過了操作系統的最大值限制,則會在啟動的時候給出提示
一般情況下,超過10000的最大連接數是使用上的問題。首先redis服務端默認的timout配置的是0,即不會關閉連接,即便這個連接已經空閑很久,這時候如果客戶端在重啟前沒有關閉連接或者說中間有防火牆之類的斷開了連接,redis 服務端將會永久保留這些連接,這時候只要配置timeout即可
除了timeout也還可以通過keepalive配置來解決,比如如果你的redis角色是sentinel,那麼redis里的timeout的配置是不生效的。
這裡的keepalive指的是TCP協議層的配置,他有三個參數影響:
連接超時公式為:
這個時間還是挺久的,redis服務端在3.2版本已經以後,默認設置了tcp_keepalive_time為300秒(以前的版本默認為0,也就是不啟用)
配置上這個參數之後,對於一些客戶端沒有正常關閉的場景也能及時的關閉
另外說到客戶端的正確配置,如果是使用Spring的話,只要配置下bean的destroy-method,在這裡關閉連接池即可,如果沒有用Spring,則要自己註冊一個ShutdownHook
1. redis報-ERR max number of clients reached錯誤
2. Custom Configuration of TCP Socket Keep-Alive Timeouts
3. Redis Clients Handling
4. Sentinel最大連接數
redis java 有什麼用
Java連接redis的使用示例
Redis是開源的key-value存儲工具,redis通常用來存儲結構化的數據,因為redis的key可以包含String、hash、listset和sorted list。
Redisclient支持多種語言,包括:c、C++、C#、php、java、python、go等語言,根據自己的開發語言,選擇合適的redis client版本類型即可。我是使用java語言開發的,針對java語言,redis client也提供了多種客戶端支持,按照推薦類型依次是:Jedis、Redisson、JRedis、JDBC-Redis、RJC、redis-protocol、aredis、lettuce。前兩種類型是比較推薦的,我們採用了Redisson類型版本作為redisclient的使用。
Redisson版的redis可發工程搭建
1. 新建maven工程
2. 在pom.xml文件的dependencies節點下增加如下內容:
dependency
groupIdorg.redisson/groupId
artifactIdredisson/artifactId
version1.0.2/version
/dependency
dependency
groupIdorg.slf4j/groupId
artifactIdslf4j-log4j12/artifactId
version1.7.7/version
/dependency
3. 保存pom.xml後,等eclispe工程構建完成後即可進行開發了
開發示例
下面是演示連接redis伺服器、保存讀取concurrentMap對象、保存讀取set對象和保存讀取Queue對象的示例代碼,代碼比較簡單,這裡就不再詳細講解了,代碼如下:
[java] view plaincopy
package com.my.test.redis;
import java.util.Queue;
import java.util.Set;
import java.util.concurrent.ConcurrentMap;
import org.redisson.Config;
import org.redisson.Redisson;
public class RedisExample {
/**
* @param args
*/
public static void main(String[] args) {
// 1.初始化
Config config = new Config();
config.setConnectionPoolSize(10);
config.addAddress(“127.0.0.1:6379”);
Redisson redisson = Redisson.create(config);
System.out.println(“reids連接成功…”);
// 2.測試concurrentMap,put方法的時候就會同步到redis中
ConcurrentMapString, Object map = redisson.getMap(“FirstMap”);
map.put(“wuguowei”, “男”);
map.put(“zhangsan”, “nan”);
map.put(“lisi”, “女”);
ConcurrentMap resultMap = redisson.getMap(“FirstMap”);
System.out.println(“resultMap==” + resultMap.keySet());
// 2.測試Set集合
Set mySet = redisson.getSet(“MySet”);
mySet.add(“wuguowei”);
mySet.add(“lisi”);
Set resultSet = redisson.getSet(“MySet”);
System.out.println(“resultSet===” + resultSet.size());
//3.測試Queue隊列
Queue myQueue = redisson.getQueue(“FirstQueue”);
myQueue.add(“wuguowei”);
myQueue.add(“lili”);
myQueue.add(“zhangsan”);
myQueue.peek();
myQueue.poll();
Queue resultQueue=redisson.getQueue(“FirstQueue”);
System.out.println(“resultQueue===”+resultQueue);
// 關閉連接
redisson.shutdown();
}
}
原創文章,作者:ISRW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/142375.html