redis簡介以及安裝和配置
查看我網易雲筆記 文檔:6-Redis安裝與配置.note
鏈接:http://note.youdao.com/noteshare?id=e41016b553359acd0b4d97a4a62fa538&sub=89A0AF7F3DDF477096CC0B5C290196A6
如果是採用docker-compose安裝。配置和安裝直接用下面的
Jedis連接
docker-compose.yml配置
version: '3'
services:
#redis
redis:
hostname: redis
image: redis:latest
container_name: redis
restart: unless-stopped
command: redis-server /etc/redis.conf # 啓動redis命令
environment:
- TZ=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime:ro # 設置容器時區與宿主機保持一致
- /usr/local/docker/redis/data:/data
- /usr/local/docker/redis/redis.conf:/etc/redis.conf
ports:
- 6379:6379
引入依賴
<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-core -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.2.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
配置
在ClassPath(或者src/main/resources)的config目錄下下新建redis.setting
#-------------------------------------------------------------------------------
# Redis客戶端配置樣例
# 每一個分組代表一個Redis實例
# 無分組的Pool配置爲所有分組的共用配置,如果分組自己定義Pool配置,則覆蓋共用配置
# 池配置來自於:https://www.cnblogs.com/jklk/p/7095067.html
#-------------------------------------------------------------------------------
#----- 默認(公有)配置
# 地址,默認localhost
host = localhost
# 端口,默認6379
port = 6379
# 超時,默認2000
timeout = 2000
# 連接超時,默認timeout
connectionTimeout = 2000
# 讀取超時,默認timeout
soTimeout = 2000
# 密碼,默認無
password =
# 數據庫序號,默認0
database = 0
# 客戶端名,默認"Hutool"
clientName = Hutool
# SSL連接,默認false
ssl = false;
#----- 自定義分組的連接
[custom]
# 地址,默認localhost
host = localhost
# 連接耗盡時是否阻塞, false報異常,ture阻塞直到超時, 默認true
BlockWhenExhausted = true;
# 設置的逐出策略類名, 默認DefaultEvictionPolicy(當連接超過最大空閒時間,或連接數超過最大空閒連接數)
evictionPolicyClassName = org.apache.commons.pool2.impl.DefaultEvictionPolicy
# 是否啓用pool的jmx管理功能, 默認true
jmxEnabled = true;
# 是否啓用後進先出, 默認true
lifo = true;
# 最大空閒連接數, 默認8個
maxIdle = 8
# 最小空閒連接數, 默認0
minIdle = 0
# 最大連接數, 默認8個
maxTotal = 8
# 獲取連接時的最大等待毫秒數(如果設置爲阻塞時BlockWhenExhausted),如果超時就拋異常, 小於零:阻塞不確定的時間, 默認-1
maxWaitMillis = -1
# 逐出連接的最小空閒時間 默認1800000毫秒(30分鐘)
minEvictableIdleTimeMillis = 1800000
# 每次逐出檢查時 逐出的最大數目 如果爲負數就是 : 1/abs(n), 默認3
numTestsPerEvictionRun = 3;
# 對象空閒多久後逐出, 當空閒時間>該值 且 空閒連接>最大空閒數 時直接逐出,不再根據MinEvictableIdleTimeMillis判斷 (默認逐出策略)
SoftMinEvictableIdleTimeMillis = 1800000
# 在獲取連接的時候檢查有效性, 默認false
testOnBorrow = false
# 在空閒時檢查有效性, 默認false
testWhileIdle = false
# 逐出掃描的時間間隔(毫秒) 如果爲負數,則不運行逐出線程, 默認-1
timeBetweenEvictionRunsMillis = -1
基本命令的使用
字符串(String)
jedis.set("age", "15");
jedis.get("age");
jedis.incr("age");// 實現自增 沒有key的情況下值爲0
jedis.append("age", "2");//追加字段
String age = jedis.substr("age", 0, 1);// 索引從0開始
列表(list)
jedis.lpush("list-key", "張三");
jedis.lpush("list-key", "李四");
jedis.lpush("list-key", "王五");
// 獲取所有元素
List<String> lrange = jedis.lrange("list-key", 0, -1);
lrange.forEach(System.out::println);
// 裁剪元素
String ltrim = jedis.ltrim("list-key", 0, 2);
System.out.println(ltrim);OK
哈希(hash)
Map<String, String> map = new HashMap<>();
map.put("name", "張曉慧");
map.put("age", "19");
jedis.hmset("hash-key", map);
// 獲取屬性
List<String> hmget = jedis.hmget("hash-key", "age","name");
hmget.forEach(System.out::println);
// 把年齡加一歲
Long age = jedis.hincrBy("hash-key", "age", 1);
System.out.println(age);
// 檢查key是否在散列中
Boolean age = jedis.hexists("hash-key", "age");
System.out.println(age); // true