簡介
redis (Remote Dictionary Server 遠程字典服務)開源使用C語言編寫、支持網絡、可基於內存亦可持久化日誌型、Key-Value數據庫;
特點
1、key-value型存儲系統,5種數據類型;
2、高性能數據庫
3、支持主從同步
5種數據類型
- String字符串類型
五個命令:get 、 set 、 del 、 incr、 decr 等
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get counter
"2"
127.0.0.1:6379> incr counter
(integer) 3
127.0.0.1:6379> incrby counter 100
(integer) 103
127.0.0.1:6379> get counter
"103"
127.0.0.1:6379> decr counter
(integer) 102
127.0.0.1:6379> get counter
"102"
- Hash(哈希)
命令 hget 、hset、hdel
127.0.0.1:6379> hset user name1 hao
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "hao"
127.0.0.1:6379> hget user name1
"hao"
127.0.0.1:6379> hset user name2 xiaohao
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "hao"
3) "name2"
4) "xiaohao"
可用於緩存,相比String更節省空間
- 鏈表
List(redis使用雙端鏈表實現List)有序,Value可重複
127.0.0.1:6379> lpush mylist 1 2 ll ls mem
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "mem"
2) "ls"
3) "ll"
4) "2"
5) "1"
127.0.0.1:6379>
- Set集合
集合類型保存多個字符串,無序,不允許重複元素,不可通過下標獲取元素,可取多個集合交併差集
127.0.0.1:6379> sadd myset hao hao1 xiaohao hao
(integer) 3
127.0.0.1:6379> SMEMBERS myset
1) "xiaohao"
2) "hao1"
3) "hao"
127.0.0.1:6379> SISMEMBER myset hao
(integer) 1
可用於標籤、點贊收藏等功能;
- Zset有序集合
有序、元素不可重複
127.0.0.1:6379> zadd myscoreset 100 hao 90 xiaohao
(integer) 2
127.0.0.1:6379> ZRANGE myscoreset 0 -1
1) "xiaohao"
2) "hao"
127.0.0.1:6379> ZSCORE myscoreset hao
"100"
可用於排行榜:排名不可重複,但關注度、字數等可重複;
使用
啓動虛機、進入redis根目錄、啓動redis
代碼:
pom文件導入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
yml文件配置redis
redis:
host: 192.168.80.130
port: 6379
database: 0 # redis 數據庫索引(默認爲0)
jedis:
pool:
max-active: 50 # 連接池最大連接數(使用負值標識沒有限制)
max-idle: 20 # 連接池中最大空閒連接
min-idle: 2 # 連接池中的最小空閒連接
測試類中注入
@Resource
private RedisTemplate redisTemplate;
@Test
public void set() {
redisUtils.set("redis_key", "redis_value");
}
@Test
public void get() {
String value = redisUtils.get("123");
System.out.println(value);
}
@Test
public void test() {
TemporaryClassStudentModel temporaryClassStudentModel = null;
// 根據key值查詢返回
temporaryClassStudentModel = (TemporaryClassStudentModel) redisTemplate.opsForValue().get("123");
System.out.println(temporaryClassStudentModel);
}
temporaryClassStudentModel = new TemporaryClassStudentModel();
// 上課班ID
String teachClassId = "123";
temporaryClassStudentModel.setName("123");
temporaryClassStudentModel.setId("123");
temporaryClassStudentModel.setKeyText(keyText);
temporaryClassStudentModel.setTeachClassId("123");
temporaryClassStudentModel.setCour。。。seId("123");
temporaryClassStudentModel.setCourseName("123");
redisTemplate.opsForValue().set(keyText,temporaryClassStudentModel);
redisTemplate.expire(keyText,2400, TimeUnit.SECONDS);
後續補充完善。。。