redis使用問題
-
如果redis沒有設置expire,他是否默認永不過期?【原文】
redis最大內存不足"時,數據清除策略,默認為"volatile-lru"。
因此 如果沒有設置有效期,即使內存用完,redis 自動回收機制也是看設置了有效期的,不會動沒有設定有效期的,如果清理后內存還是滿的,就不再接受寫操作。
對沒設置expire的數據,產生影響的是allkeys-lru機制,allkeys-random機制。 redis沒設置expire的數據是否會刪除,是由你自己選擇的刪除機制決定的。 -
查看key的過期時間
ttl key
當 key 不存在時,返回 -2 。
當 key 存在但沒有設置剩余生存時間時,返回 -1 。
否則,以秒為單位,返回 key 的剩余生存時間,即一個整數。 -
保留最新5條數據
// 向List頭部追加記錄
jedisCluster.lpush(CommonConstant.TTT + "" + ID, msg);
// 僅保留指定區間內的記錄數,刪除區間外的記錄。下標從 0 開始,即 end 需要最大值 -1
jedisCluster.ltrim(CommonConstant.TTT + "" + ID, 0, 4); -
redis連接 使用密碼
redis-cli -h xxx -p 6379 -a xxx -
redis list 清空記錄小技巧
redis中的list操作命令中刪除指定key中的所有記錄命令:
ltrim key 1 0
即 ltrim key start end 中的start要比end大即可,數值且都為正數。 -
Redis報錯:WRONGTYPE Operation against a key holding the wrong kind of value 解決處理
jedis方法與redis服務器中存儲數據的類型存在沖突
可以用 type key 查看數據類型
json轉化為字符串 引號 出現反斜杠【參考】
StringEscapeUtils.unescapeJava(str)
或者
StringEscapeUtils.unescapeJava(str)
兩者是等價的。
@PostConstruct注解
Spring框架中使用到@PostConstruct注解 該注解的方法在整個Bean初始化中的執行順序:
Constructor(構造方法) -> @Autowired(依賴注入) -> @PostConstruct(注釋的方法)
[Java基礎]StringUtils.join()方法與String.join()方法的使用【原文】
-
StringUtils.join()方法:
需要引入 common-lang3.jar包
此方法需傳入2個參數,第一個參數是傳入一個任意類型數組或集合,第二個參數是拼接符。數組和集合支持類型較多 -
String.join()方法:
String.join()是JDK8新增方法(無需引包)
發現參數為2個,第一個參數為拼接符號,第二個參數為數組和集合
這里和StringUtils.join()有區別,參數順序不一樣,另外,StringUtils.join()可以傳入Integer或者其他類型的集合或數組,而String.join()盡可以傳入實現charSequence接口類型的集合或數組。
如果是字符串類型的集合或數組推薦使用String.join()。
switch case 邏輯或的寫法
switch (env) {
case "fat":
case "dev":
return "666";
case "uat":
return "777";
default:
return "";
}