Java Redis系列2 (redis的安裝與使用+redis持久化的實現)
什麼是Redis?
Redis是用C語言開發的一個開源的高效能鍵值對(key-value)資料庫,官方提供測試資料,50個併發執行100000個請求,讀的速度是110000次/s,寫的速度是81000次/s ,且Redis通過提供多種鍵值資料型別來適應不同場景下的儲存需求,目前為止Redis支援的鍵值資料型別如下:
- 字串型別 string
- 雜湊型別 hash
- 列表型別 list
- 集合型別 set
- 有序集合型別 sortedset
Redis的應用場景
1.快取(資料查詢,短連結,新聞內容,商品內容)
2.聊天室的線上好友
3.任務佇列(秒殺,搶購)
4.應用排行榜
5.網站訪問統計
6.資料過期處理
7.分散式叢集架構中的session分離
下載安裝
- 官網:https://redis.io
- 中文網:http://www.redis.net.cn/
- 解壓直接可以使用:
* redis.windows.conf:配置檔案
* redis-cli.exe:redis的客戶端
* redis-server.exe:redis伺服器端
Redis的資料結構
看過我上一篇文章的兄弟應該都知道redis是key,value格式的資料,其中key是字串
,value是有五種不同的資料結構
圖解
value的資料結構型別
1.字串型別 String
2.雜湊型別 hash:map格式
3.列表型別list:linkedlist格式,支援重複元素
4.集合型別 set:不允許重複元素
5.有序集合型別:sortedset:不允許重複元素,且元素有順序
命令操作
我們先開啟伺服器端
再開啟客戶端
1.字串型別
1.1儲存 set key value
1.2獲取 get value
演示
2.雜湊型別
1.儲存 :hset key field value
2.獲取 :hget key field
3.獲取全部的key和valu :hgetall myhash
4.刪除:hdel key field
演示
3.列表型別
可以新增一個元素帶一個列表的頭部或尾部
1.lpush key value:將元素加入到列表左表
2.rpush key value:將元素加入到列表的右表
3.獲取:lrange key start end:範圍獲取
4.刪除列表最左邊的元素並將元素返回:lpop key
5.刪除列表最右邊的元素並將元素返回:rpop key
演示
//從左邊插入元素
127.0.0.1:6379> lpush list a
(integer) 1
127.0.0.1:6379> lpush list b
(integer) 2
//獲取全部元素
127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "a"
127.0.0.1:6379> rpush list c
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "a"
3) "c"
//移除列表最左邊的元素
127.0.0.1:6379> lpop list
"b"
127.0.0.1:6379> lrange list 0 -1
1) "a"
2) "c"
//移除列表最右邊的元素
127.0.0.1:6379> rpop list
"c"
127.0.0.1:6379> lrange list 0 -1
1) "a"
127.0.0.1:6379>
集合型別set:不允許重複元素
1.儲存資料 sadd key value
2.刪除資料 srem key value
3.獲取資料:smembers key獲取set集合中的所有元素
//新增資料
127.0.0.1:6379> sadd set 1
(integer) 1
127.0.0.1:6379> sadd set 2
(integer) 1
//獲取所有元素
127.0.0.1:6379> smembers set
1) "1"
2) "2"
//刪除指定元素
127.0.0.1:6379> srem set 1
(integer) 1
127.0.0.1:6379> smembers set
1) "2"
127.0.0.1:6379>
有序集合型別sortedset
不允許重複元素,且元素有序,每個元素都會關聯一個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
//插入資料
127.0.0.1:6379> zadd sortedset 1 zhangsan
(integer) 1
127.0.0.1:6379> zadd sortedset 5 lisi
(integer) 1
127.0.0.1:6379> zadd sortedset 2 wangwu
(integer) 1
//獲取資料
127.0.0.1:6379> zrange sortedset 0 -1
1) "zhangsan"
2) "wangwu"
3) "lisi"
//移除指定資料
127.0.0.1:6379> zrem sortedset wangwu
(integer) 1
127.0.0.1:6379> zrange sortedset 0 -1
1) "zhangsan"
2) "lisi"
127.0.0.1:6379>
通用命令
keys * :獲取所有鍵
type key :獲取鍵對應的value的型別
del key :刪除指定的key value
Redis 持久化
為什麼要進行持久化?
redis是一個記憶體資料庫,當redis伺服器重啟時,資料會丟失,所以我們需要將redis資料持久化到硬碟檔案中
redis的持久化機制
1.RDB:預設方式,不需要進行配置,預設就是使用這種機制
在一定的時間間隔內,通過檢測key的變化情況,然後持久化資料
1.1編輯redis.windows.conf檔案
save 900 1
15分鐘後至少一個發生改變
save 300 10
五分鐘後至少10個發生改變
save 60 10000
一分鐘後至少10000個發生改變
1.2 重新啟動redis伺服器,並指定配置檔名稱
D:\JavaWeb2018\day23_redis\資料\redis\windows-64\redis-2.8.9>redis-server.exe redis.windows.conf
AOF:日誌記錄的方式,可以記錄每一條命令的操作。可以每一次命令操作後,持久化資料
1. 編輯redis.windwos.conf檔案
appendonly no(關閉aof) --> appendonly yes (開啟aof)
# appendfsync always : 每一次操作都進行持久化
appendfsync everysec : 每隔一秒進行一次持久化
# appendfsync no : 不進行持久化