一、概述
1、簡介
Redis 是完全開源免費的,遵守BSD協議,是一個高性能的NOSQL系列的非關係型key-value數據庫;
數據存儲在內存中的數據庫;
2、關係型數據庫與非關係型數據庫
關係型數據庫:
1、數據之間有關聯關係;
2、數據存儲在電腦硬盤文件上;
非關係型數據庫:
1、數據之間沒有關聯關係;
2、數據存儲在電腦內存上;
3、問題
當經常查詢一些不太經常變化的數據,操作關係型數據庫非常耗時!
解決方案:
使用緩存思想解決此問題,第一次查詢數據的時候從數據庫查詢,然後放入緩存,再返回查詢結果, 等以後查詢的時候直接在緩存裏面返回結果即可。
二、Redis下載安裝和簡介
下載地址:
https://github.com/MicrosoftArchive/redis/releases
安裝:
直接解壓即可;
重要文件簡介:
redis.windows.conf:配置文件;
redis-server.exe:服務器端;
redis-cli.exe:客戶端;
三、命令操作
1、Redis的數據結構
key-value:鍵值對結構的數據;
其中key是字符串,value有五種數據類型:
1、字符串類型:string
2、哈希類型:hash
3、列表類型:list
-- 列表允許重複,有序;
4、集合類型:set
-- 集合不允許重複,無序;
5、有序集合類型:sortedset
-- 集合不允許重複,有序;
2、字符串類型
存儲
set key value
獲取
get key
刪除
del key
代碼演示:
3、哈希類型
存儲
hset key field value
獲取
hget key field
刪除
hdel key field
代碼演示
4、列表類型(list)
可以添加一個元素到列表的頭部(左邊)或者尾部(右邊);
存儲
1、將元素添加到列表左邊:lpush key value;
2、將元素添加到列表右邊:rpush key value;
獲取
1、獲取一個範圍的元素:lrange key start end
-- 獲取所有start end是0 -1
刪除
1、刪除列表最左邊的元素並將該元素返回:lpop key
2、刪除列表最右邊的元素並將該元素返回:rpop key
代碼演示
5、集合類型set
存儲
sadd key value
獲取
smembers key:獲取set集合的所有元素;
刪除
srem key value:刪除set集合中的某個元素;
代碼演示
6、有序集合類型sorted set
存儲
zadd key score value:score分數,元素按照分數大小排序;
獲取
查詢某一範圍的元素:zrange key start end
-- 獲取所有start end是0 -1
刪除
zrem key value:刪除某一元素
代碼演示
7、通用命令
1、查詢所有的鍵:keys *
2、獲取鍵對應的數據類型:type key
3、刪除指定的鍵值對:del key
四、持久化
1、說明
Redis是一個內存數據庫,數據臨時存放在內存中,我們可以將數據保存到硬盤中;
2、兩種持久化機制
RDB
默認,不需要進行配置,默認使用這種機制;
在一定的間隔時間中,檢測key的變化情況,然後持久化數據;
AOF
日誌操作記錄方式,可以記錄每一條命令的操作,可以在每次操作後,持久化數據;
3、EDB(有可能丟失數據)
使用步驟
第一步:編輯redis.windows.conf文件
編輯redis.windows.conf文件:(將下面的數值進行修改即可)
# after 900 sec (15 min) if at least 1 key changed
15分鐘後,至少有1個keys發生了改變,就進行保存
save 900 1
# after 300 sec (5 min) if at least 10 keys changed
5分鐘後,至少有10個keys發生了改變,就進行保存
save 300 10
# after 60 sec if at least 10000 keys changed
1分鐘後,至少有10000個keys發生了改變,就進行保存
save 60 10000
第二步:重啓服務器,指定配置文件
D:\MySoft\Redis\Redis-x64-3.0.504>redis-server.exe redis.windows.conf
4、AOF(影響性能)
使用步驟
第一步:編輯redis.windows.conf文件
1、開關
默認:appendonly no(關閉AOF)
改成:appendonly yes(開啓AOF)
2、頻率
appendfsync always:每次操作進行持久化;
appendfsync everysec:(默認)每秒進行持久化;
appendfsync no:不進行持久化;
第二步:重啓服務器,指定配置文件
D:\MySoft\Redis\Redis-x64-3.0.504>redis-server.exe redis.windows.conf
五、Java代碼操作Redis(使用Jedis)
1、Jedis簡介
使用Java操作Redis的工具;
2、快速入門
使用步驟
第一步:下載jedis相關,導入jar包;
下載地址(兩個文件):
https://mvnrepository.com/artifact/redis.clients/jedis
https://mvnrepository.com/artifact/org.apache.commons/commons-pool2
第二步:獲取連接;
第三步:進行操作;
第四步:關閉連接;
代碼演示
package redis;
import redis.clients.jedis.Jedis;
public class MyRedis {
public static void main(String[] args) {
//1、獲取連接
Jedis jedis = new Jedis("localhost",6379);
//2、進行操作
jedis.set("name","zibo");
//3、關閉連接
jedis.close();
}
}
運行結果(存儲數據成功了)
3、操作String、hash、list、set和sorted set
與命令行操作極爲類似,不再演示;
文檔教程地址:https://www.runoob.com/redis/redis-java.html
補充:
setex(String key, int seconds, String value):可以指定鍵值對保存的時間,過時之後自動刪除;
六、Jedis連接池(JedisPool)
1、使用步驟
第一步:創建JedisPool對象;
第二步:調用getResource()方法獲取Jedis連接;
第三步:使用jedis;
第四步:歸還jedis;
代碼演示
package redis;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class MyRedis {
public static void main(String[] args) {
//第一步:創建JedisPool對象;
//無參,默認參數
JedisPool pool = new JedisPool();
//帶參
//1、創建配置對象;
// JedisPoolConfig config = new JedisPoolConfig();
// config.setMaxTotal(50);
// config.setMaxIdle(10);
// JedisPool pool = new JedisPool(config,"localhost",6379);
//第二步:調用getResource()方法獲取Jedis連接;
Jedis jedis = pool.getResource();
//第三步:使用jedis
jedis.set("name","zibo");
//第四步:歸還jedis
jedis.close();
}
}