Java Redis系列2 (redis的安裝與使用+redis持久化的實現))

Java Redis系列2 (redis的安裝與使用+redis持久化的實現)

什麼是Redis?

在這裡插入圖片描述

Redis是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫,官方提供測試數據,50個並發執行100000個請求,讀的速度是110000次/s,寫的速度是81000次/s ,且Redis通過提供多種鍵值數據類型來適應不同場景下的存儲需求,目前為止Redis支持的鍵值數據類型如下:

  1. 字符串類型 string
  2. 哈希類型 hash
  3. 列表類型 list
  4. 集合類型 set
  5. 有序集合類型 sortedset

Redis的應用場景

1.緩存(數據查詢,短鏈接,新聞內容,商品內容)
2.聊天室的在線好友
3.任務隊列(秒殺,搶購)
4.應用排行榜
5.網站訪問統計
6.數據過期處理
7.分佈式集群架構中的session分離

下載安裝

  1. 官網://redis.io
  2. 中文網://www.redis.net.cn/
  3. 解壓直接可以使用:

在這裡插入圖片描述

		* 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	 : 不進行持久化

以上就是Redis的一些基礎操作及怎麼進行持久化,這也是我JAVA redis系列的第二篇,後面我會繼續更新,寫作不易,請各位老鐵點個贊支持一下,覺得有幫助的也可以收藏呀,我會經常更新文章,也可以關注我呀

在這裡插入圖片描述