亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis環境搭建和使用的方法

發布時間:2022-07-01 09:27:49 來源:億速云 閱讀:216 作者:iii 欄目:關系型數據庫

這篇文章主要介紹“Redis環境搭建和使用的方法”,在日常操作中,相信很多人在Redis環境搭建和使用的方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Redis環境搭建和使用的方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Redis環境搭建和使用的方法

一、常見的非關系型數據庫NOSQL分類

NOSQL類型主要數據庫產品類型特色
K-V鍵值對存儲類型Redis、Memcached使用key可以快速的查詢到value,Memcached可以支持String類型的值value,Redis支持的值的數據類型很多如:String\set\hash\sortset\list等等
文檔存儲類型MongoDB、CouchDB使用JSON或類JSON的BSON數據結構,存儲的內容為文檔型,能夠實現部分關系型數據庫的功能
列存儲類型HBase、Cassandra按照列進行數據存儲,該類型便于存儲結構化和半結構化的數據,可以方便做數據壓縮和針對某一列或者某幾列的數據查詢
圖存儲類型Neo4J、FlockDB以圖形關系存儲數據,能夠很好的彌補關系型數據庫在圖形存儲時的不足
對象存儲類型Db4o、Versant該存儲類型的數據庫通過類似面向對象的方式操作數據庫,通過對象的方式存取數據
XML存儲類型Berkeley DB XML、BaseX該類型數據庫可以高效的存儲XML數據,并且支持XML的內部查詢語法,例如;XQuery、XPath

二、了解Redis

Redis(Remote Dictionary Server ),即遠程字典服務,是一個開源的(BSD協議)使用ANSI C語言編寫,基于內存的且支持持久化,高性能的Key-Value的NOSQL數據庫;Redis支持的數據結構類型很豐富,如 :字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 以及范圍查詢, bitmaps(位圖), hyperloglogs (超級日志)和 地理空間(geospatial) 索引半徑查詢等等。并且Redis有著豐富的支持主流語言的客戶端,C/C++、Python、Erlang、R、C#、Java、PHP、Objective-C、Perl、Ruby、Scala、Go、JavaScript等;Redis 內置復制、Lua 腳本、LRU 驅逐、事務和不同級別的磁盤持久化,并通過 Redis Sentinel 和 Redis Cluster 自動分區提供高可用性;我們可以將Redis應用在緩存(StackOverFlow)、數據庫、消息中間件等上。

三、Redis的單節點安裝教程

                         點我返回目錄

安裝準備:Linux虛擬機:CentOS7、操作工具:Xshell 、Xftp

(1)、在安裝Redis之前,我們需要先配置阿里云的yum源

下載配置文件

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

生成緩存

yum makecache

(2)、安裝Redis

1、因為Redis是使用ANSI C語言編寫的,所以我們要先安裝gcc依賴

yum install -y gcc-c++ gcc tcl

2、使用Xftp上傳Redis壓縮的安裝包到Linux虛擬機并解壓

上傳的壓縮包的路徑,可以自己指定或創建上傳的目錄
小北是上傳到了/usr/local/module/目錄,然后解壓到了/usr/local/soft/目錄下

tar -xvf redis-3.0.0.tar.gz

Redis環境搭建和使用的方法

3、進入解壓好的目錄redis-3.0.0,編譯make

cd redis-3.0.0
make

Redis環境搭建和使用的方法

下面shell命令是用于測試make的,可用可不用

 make test

創建安裝目錄

這是小北的安裝目錄

mkdir -p /usr/local/soft/redis

安裝

make PREFIX=/usr/local/soft/redis install

Redis環境搭建和使用的方法

4、復制配置文件

cp /usr/local/soft/redis-3.0.0/redis.conf /usr/local/soft/redis/bin/

配置環境變量

vim /etc/profile

添加環境變量

export REDIS_HOME=/usr/local/soft/redis/ export PATH=$REDIS_HOME/bin

讓環境變量修改生效

source /etc/profile

5、啟動Redis

后臺啟動

cd /usr/local/soft/redis/bin
nohup redis-server redis.conf &

Redis環境搭建和使用的方法

關閉redis的命令,要先獲取Redis的進程號,殺死該進程

ps -aux | grep redis
kill -9

6、連接Redis

查看啟動日志:

cat nohup.out

Redis環境搭建和使用的方法
后臺啟動Redis

 redis-cli

Redis環境搭建和使用的方法

7、測試使用Redis

插入一條數據

 set  key1 value1

查詢數據

 get key1

Redis環境搭建和使用的方法

四、Redis的常用命令

1、Help幫助命令

Redis環境搭建和使用的方法

2、SET命令

                         點我返回目錄

(1)設置字符串值
	命令使用格式:		SET key value [EX seconds] [PX milliseconds] [NX|XX]
	注意:	
		EX 表示設置過期時間,單位:秒,等同于SETEX key seconds value
		PX 表示設置過期時間,單位:毫秒,等同于PSETEX key milliseconds value
		NX 表示鍵不存在,才能設置,等同于SETNX key value
		XX 表示鍵存在時,才能設置

(2)設置多個鍵的字符串值
	使用格式:
		MSET key value [key value ...](3)當鍵不存在時,設置字符串值
		MSETNX key value [key value ...]
	注意:這是原子操作

Redis環境搭建和使用的方法

3、過期命令

Redis中可以給Key設置一個生存時間(秒或毫秒),當達到這個時長后,這些鍵值將會被自動刪除。

(1)設置多少秒或者毫秒后過期
	EXPIRE key seconds
	PEXPIRE key milliseconds
	
(2)設置在指定Unix時間戳過期
	EXPIREAT key timestamp
	PEXPIREAT key milliseconds-timestamp
	
(3)刪除過期
	PERSIST key
	
(4)生存時間
	Time To Live,指Key的剩余生存時間
(5)查看剩余生存時間
	TTL key
	PTTL key
	key存在但沒有設置TTL,返回-1
	key存在,但還在生存期內,返回剩余的秒或者毫秒
	key曾經存在,但已經消亡,返回-2(2.8版本之前返回-1)

Redis環境搭建和使用的方法

4、查找鍵命令

(1)查找鍵使用格式:
		KEYS pattern
		
(2)pattern的取值		* 任意長度字符
		? 任意一個字符		[] 字符集合,表示可以是集合中的任意一個

Redis環境搭建和使用的方法

5、操作鍵命令

(1)查看鍵的數據類型			TYPE key
(2)判斷鍵是否存在
			EXISTS key
(3)給鍵重命名
		RENAME key newkey
		RENAMENX key newkey   若鍵存在就rename
(4)刪除鍵		DEL key [key ...]

Redis環境搭建和使用的方法

6、GET命令

(1)獲取值
		GET key		
(2)獲取多個給定的鍵的值
		MGET key [key ...]
		(3)返回舊值并設置新值
		GETSET key value   如果鍵不存在,就創建并賦值		
(4)獲取字符串長度
	 	STRLEN key	 	
(5)追加字符串
		APPEND key value
		如果鍵存在就追加;如果不存在就等同于SET key value		
(6)獲取子字符串
		GETRANGE key start end
	索引值從0開始,負數表示從字符串右邊向左數起,-1表示最有一個字符	
(7)覆蓋字符串
		SETRANGE key offset value

Redis環境搭建和使用的方法

7、步長命令

注意:只能對整形的數據進行步長操作

(1)步長1的增減
		INCR key
		DECR key
		字符串值會被解釋成64位有符號的十進制整數來操作,結果依然轉成字符串
		
(2)步長增減,指定步長長度
		INCRBY key decrement
		DECRBY key decrement
		字符串值會被解釋成64位有符號的十進制整數來操作,結果依然轉成字符串

Redis環境搭建和使用的方法

8、登錄不同的庫命令

redis-cli --help
redis-cli -n 2

9、清除當前庫數據命令

FLUSHDB

10、清除所有庫中的數據命令

FLUSHALL

五、BITMAP位圖

位圖不是真正的數據類型,它是定義在字符串類型中的,我們知道一個字符串類型的值最多能存儲512M字節的內容,其中位上限:2^(9+10+10+3) =2^32b

1、位圖常用命令

(1)設置某一位上的值
		SETBIT key offset value 
			offset偏移量,從0開始
			value不寫,默認是0
(2)獲取某一位上的值
		GETBIT key offset
(3)返回指定值0或者1在指定區間上第一次出現的位置
		BITPOS key bit [start] [end]

Redis環境搭建和使用的方法
Redis環境搭建和使用的方法

2、位操作命令

對一個或多個保存二進制位的字符串 key 進行位元操作,并將結果保存到 dteskey 上

  • operation 可以是 AND 、 OR 、 NOT 、 XOR 這四種操作中的任意一種

  • BITOP AND destkey key [key …] ,對一個或多個 key 求邏輯并,并將結果保存到 destkey

  • BITOP OR destkey key [key …] ,對一個或多個 key 求邏輯或,并將結果保存到 destkey

  • BITOP XOR destkey key [key …] ,對一個或多個 key 求邏輯異或,并將結果保存到 destkey

  • BITOP NOT destkey key ,對給定 key 求邏輯非,并將結果保存到 destkey

  • 除了 NOT 操作之外,其他操作都可以接受一個或多個 key 作為輸入

  • 當 BITOP 處理不同長度的字符串時,較短的那個字符串所缺少的部分會被看作 0

  • 空的 key 也被看作是包含 0 的字符串序列

已知a和b的二進制表示:
a = 01100001
b = 01100010

都為1才為1
AND=》求邏輯并(與) 1 and 1->1    0 and 0->0     1 and 0->0
bitop and aband a b

有一個為1就為1
OR=》求邏輯或     1 or 1->1    0 or 0->0     1 or 0->1
bitop or abor a b

就是取反(反轉)NOT=》求邏輯非    not 0 ->1    not 1->0
bitop not anot a
bitop not bnot b

相同為0,相異為1
XOR=》求邏輯異或  0 xor 0->0   1 xor 1->0    1 xor 0->1
bitop xor abxor a b

3、統計指定位區間上值為1的個數

使用格式1:
		BITCOUNT key [start] [end] 
		從左向右從0開始,從右向左從-1開始,
		注意:官方start、end是位,測試后是字節
使用格式2:
		BITCOUNT testkey 0 0
		表示從索引為0個字節到索引為0個字節,也就是指對第一個字節的統計
	注意:
		BITCOUNT testkey 0  -1 等同于BITCOUNT testkey
	
我們最常用的格式就是 BITCOUNT testkey

Redis環境搭建和使用的方法

六、Redis的數據模型

Redis環境搭建和使用的方法

1、Redis的 key 鍵

Redis的 key 值是二進制安全的,這意味著可以用任何二進制序列作為key值,從形如”foo”的簡單字符串到一個JPEG文件的內容都可以。空字符串也是有效key值。

Key取值原則:

  • 鍵值不需要太長,太長會消耗內存,且在數據中查找這類鍵值的計算成本較高

  • 鍵值不宜過短,過短則可讀性較差

2、Redis的 Value 值

1、String字符串

字符串是一種最基本的Redis值類型。Redis字符串是二進制安全的,這意味著一個Redis字符串能包含任意類型的數據;并且一個字符串類型的值最多能存儲512M字節的內容。

2、 List列表

List列表是基于Linked List實現的,列表中的元素是字符串類型;而列表的頭尾增刪速度快,中間增刪速度慢,正常使用過程中增刪元素是常態,列表中元素可以重復出現,并且列表中最多能包含2^32-1個元素列表的索引從左至右,從0開始;從右至左,從-1開始

(1)注意: 
	 命令說明:
			B --》block 塊,阻塞
			L --》left 左
			R --》right 右
			X --》exist 存在
(2)左右(或者頭尾)壓入元素
		左(頭)壓入元素:
			格式: LPUSH key value [value ...]
			舉例: LPUSHX key value
			
		左(頭)壓入元素:
			格式:RPUSH key value [value ...]
			舉例:RPUSHX key value

Redis環境搭建和使用的方法

(3)左右(或者頭尾)彈出元素(取出元素后,原先的位置就沒有了)
		LPOP key
		RPOP key
		
(4)從一個列表尾部彈出元素壓入到另一個列表的頭部
		RPOPLPUSH source destination

(5)返回列表中指定范圍元素(返回元素后,原先的位置還有)
		LRANGE key start stop
		LRANGE key 0 -1 表示返回所有元素
		
(6)獲取指定位置的元素
		LINDEX key index
		
(7)設置指定位置元素的值
		LSET key index value
		
(8)獲取列表長度(元素個數)
		LLEN key
		
(9)從列表頭部開始刪除值等于value的元素count次
		LREM key count value
count > 0 : 從表頭開始向表尾搜索,移除與 value 相等的元素,數量為 count
count < 0 : 從表尾開始向表頭搜索,移除與 value 相等的元素,數量為 count 的絕對值
count = 0 : 移除表中所有與 value 相等的值

(10)去除指定范圍外元素
		LTRIM key start stop
		
(11)在列表中某個存在的值(pivot)前或后插入元素
		LINSERT key BEFORE|AFTER pivot value
		若key和pivot不存在,則不進行任何操作
		
(12)阻塞
	如果彈出的列表不存在或者為空,就會造成阻塞
	若超時時間設置為0,就是永久阻塞,直到有數據可以彈出
	如果多個客戶端阻塞在同一個列表上,那么使用First In First Service原則,先到先服務
	
(13)左右(或者頭尾)阻塞彈出元素
		BLPOP key [key ...] timeout
		BRPOP key [key ...] timeout
		
(14)從一個列表尾部阻塞彈出元素壓入到另一個列表的頭部
		BRPOPLPUSH source destination timeout

3、 Hash散列

Hash散列是由field和關聯的value組成的map鍵值對,而field和value都是字符串類型,一個hash中最多包含2^32-1鍵值對。

(1)設置單個字段
		HSET key field value
		HSETNX key field value
		當在key的filed不存在的情況下執行,那么key不存在會直接創建
		
(2)設置多個字段
		HMSET key field value [field value ...]
		(3)返回字段個數
		HLEN key
		
(4)判斷字段是否存在
		HEXISTS key field
		key或者field不存在,返回0
		
(5)返回字段值
		HGET key field
		
(6)返回多個字段值
		HMGET key field [field ...]
		(7)返回所有的鍵值對
		HGETALL key
		
(8)返回所有字段名
		HKEYS key
		
(9)返回所有值
		HVALS key
		
(10)在字段對應的值上進行整數的增量計算
		HINCRBY key field increment
		
(11)在字段對應的值上進行浮點數的增量計算
		HINCRBYFLOAT key field increment
		
(12)刪除指定的字段
		HDEL key field [field ...]

1).使用Hash的優點

  • 節約內存空間

  • 每創建一個鍵,它都會為這個鍵儲存一些附加的管理信息(例如這個鍵最后一次被訪問的時間等等)所以數據庫里面的鍵越多,Redis數據庫服務器在儲存附加管理信息方面耗費的內存就會越多,那么用在管理數據庫鍵上的CPU也會越多,在字段對應的值上進行浮點數的增量計算。

2).不適合使用Hash的情況

  • 使用二進制位操作命令:因為Redis目前支持對字符串鍵進行SETBIT、GETBIT、BITOP等操作,若要使用這些操作,那么只能使用字符串鍵,雖然散列也能保存二進制數據

  • 使用過期鍵功能:Redis的鍵過期功能目前只能對鍵進行過期操作,而不能對散列的字段進行過期操作,因此如果你要對鍵值對數據使用過期功能的話,那么只能把鍵值對儲存在字符串里面

4、Set集合

       Set集合內存儲的元素是無序的、去重的,元素是字符串類型,最多包含2^32-1個元素

(1)增加一個或多個元素
		SADD key member [member ...]
		如果元素已經存在,則自動忽略
		
(2)移除一個或者多個元素
		SREM key member [member ...]
		元素不存在,自動忽略
		
(3)返回集合包含的所有元素
		SMEMBERS key
	如果集合元素過多,例如百萬個,需要遍歷,可能會造成服務器阻塞,生產環境應避免使用
	
(4)檢查給定元素是否存在于集合中
		SISMEMBER key member
		
(5)集合的無序性
		SADD friends "java" "hadoop" "tomcat" "hive" "mapreduce" "spark"
		SADD anotherfriends "java" "hadoop" "tomcat" "hive" "mapreduce" "spark"
		SMEMBERS friends
		SMEMBERS anotherfriends
	注意:
	SMEMBERS 有可能返回不同的結果,
	如果需要存儲有序且不重復的數據使用有序集合,存儲有序可重復的使用列表	
(6)隨機返回集合中指定個數的
		SRANDMEMBER key [count]
	如果 count 為正數,且小于集合基數,
		那么命令返回一個包含 count 個元素的數組,數組中的元素各不相同。
	如果 count 大于等于集合基數,那么返回整個集合
	如果 count 為負數,
		那么命令返回一個數組,數組中的元素可能會重復出現多次,而數組的長度為 count 的絕對值
	如果 count 為 0,返回空
	如果 count 不指定,隨機返回一個元素	
(7)返回集合中元素的個數
		SCARD key
	鍵的結果會保存信息,集合長度就記錄在里面,所以不需要遍歷	
(8)隨機從集合中移除并返回這個被移除的元素
		SPOP key		
(9)把元素從源集合移動到目標集合
		SMOVE source destination member		
(10)求差集
		SDIFF key [key ...],從第一個key的集合中去除其他集合和自己的交集部分
		SDIFFSTORE destination key [key ...],將差集結果存儲在目標key中		
(11)求交集
		SINTER key [key ...],取所有集合交集部分
		SINTERSTORE destination key [key ...],將交集結果存儲在目標key中		
(12)求并集
		SUNION key [key ...],取所有集合并集
		SUNIONSTORE destination key [key ...],將并集結果存儲在目標key中

5、SortedSet有序集合

SortedSet有序集合與Set集合類似,它是有序的、去重的,元素是字符串類型,每一個元素都關聯著一個浮點數分值(Score),并按照分值從小到大的順序排列集合中的元素。其分值可以相同;最多包含2^32-1個元素。

(1)增加一個或多個元素
		ZADD key score member [score member ...]
		如果元素已經存在,則使用新的score
		
(2)移除一個或者多個元素
		ZREM key member [member ...]
		元素不存在,自動忽略
		
(3)顯示分值
		ZSCORE key member
		
(4)增加或者減少分值
		ZINCRBY key increment member
			increment為負數就是減少
			
(5)返回元素的排名(索引)
		ZRANK key member
		
(6)返回元素的逆序排名
		ZREVRANK key member
		
(7)返回指定索引區間元素
		ZRANGE key start stop [WITHSCORES]
		如果score相同,則按照字典序lexicographical order 排列
		默認按照score從小到大,如果需要score從大到小排列,使用ZREVRANGE
		
(8)返回指定索引區間元素
		ZREVRANGE key start stop [WITHSCORES]
		如果score相同,則按照字典序lexicographical order 的 逆序 排列
		默認按照score從大到小,如果需要score從小到大排列,使用ZRANGE
		
(9)返回指定分值區間元素(升序排序)
		ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
		返回score默認屬于[min,max]之間,元素按照score升序排列,若score相同則按照字典排序
		LIMIT中offset代表跳過多少個元素,count是返回幾個。類似于Mysql
		使用小括號,則修改區間為開區間,例如(5、(10、5)
		-inf 和 +inf 分別表示負無窮和正無窮
		
(10)返回指定分值區間元素(降序排序)
		ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
		返回score默認屬于[min,max]之間,元素按照score降序排列,score相同字典降序
		LIMIT中offset代表跳過多少個元素,count是返回幾個。類似于Mysql
		使用小括號,修改區間為開區間,例如(5、(10、5)
		-inf和+inf表示負無窮和正無窮
		
(11)移除指定排名范圍的元素
		ZREMRANGEBYRANK key start stop
		
(12)移除指定分值范圍的元素
		ZREMRANGEBYSCORE key min max
		
(13)返回集合中元素個數
		ZCARD key
		
(14)返回指定范圍中元素的個數
		ZCOUNT key min max
		ZCOUNT fruits 4 7
		ZCOUNT fruits (4 7

(15)求并集
	ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]numkeys必須指定key的數量
WEIGHTS選項,與前面設定的key對應,對應key中每一個score都要乘以這個權重
AGGREGATE選項,指定并集結果的聚合方式
SUM:將所有集合中某一個元素的score值之和作為結果集中該成員的score值
MIN:將所有集合中某一個元素的score值中最小值作為結果集中該成員的score值
MAX:將所有集合中某一個元素的score值中最大值作為結果集中該成員的score值

(16)求交集
	ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]numkeys指定key的數量,必須
WEIGHTS選項,與前面設定的key對應,對應key中每一個score都要乘以這個權重
AGGREGATE選項,指定并集結果的聚合方式
SUM:將所有集合中某一個元素的score值之和作為結果集中該成員的score值
MIN:將所有集合中某一個元素的score值中最小值作為結果集中該成員的score值
MAX:將所有集合中某一個元素的score值中最大值作為結果集中該成員的score值

七、Redis持久化

       Redis持久化是指將數據從掉電易失的內存存放到能夠永久存儲的設備上
        Redis持久化兩種方式:RDB(Redis DB) 和 AOF(AppendOnlyFile)

1、Redis持久化-RDB

在默認情況下,Redis 將數據庫快照保存在名字為 dump.rdb的二進制文件中

(1)RDB使用策略

  • 自動:按照配置文件中的條件滿足就執行BGSAVE
    save 60 10000,Redis要滿足在60秒內至少有10000個鍵被改動,會自動保存一次

  • 手動:客戶端發起SAVE、BGSAVE命令

注意:RDB策略會容易造成數據丟失

(2)SAVE命令

在redis 客戶端使用 save命令用于將數據持久化的保存到disk(磁盤)中,但執行該命令時會阻塞Redis服務,無法響應客戶端請求,也就是在服務器執行save命令期間,Redis服務器不允許執行其它的命令直到save命令執行完,執行save命令會創建新的dump.rdb替代舊文件

(3)BGSAVE命令

(該命令是在后臺執行的,是一個異步命令)
        在redis客戶端 使用 bgsave命令時,不會阻塞Redis服務,也就是非阻塞,Redis服務正常接收處理客戶端請求,并且Redis會folk()一個新的子進程來創建RDB文件,子進程處理完后會向父進程發送一個信號,通知它處理完畢,父進程用新的dump.rdb替代舊文件

(4)SAVE 和 BGSAVE 命令的區別

  • SAVE不用創建新的進程,速度略快

  • BGSAVE需要創建子進程,消耗額外的內存

  • SAVE適合停機維護,服務低谷時段

  • BGSAVE適合線上執行

(5)RDB持久化的優缺點

優點

  • 完全備份,不同時間的數據集備份可以做到多版本恢復

  • 緊湊的單一文件,方便網絡傳輸,適合災難恢復

  • 恢復大數據集速度較AOF快

缺點

  • 會丟失最近寫入、修改的而未能持久化的數據

  • folk過程非常耗時,會造成毫秒級不能響應客戶端請求

2、Redis持久化-AOF

Append only file(AOF),該方式采用追加的方式保存數據默認保存的文件appendonly.aof;該方式會記錄所有的寫操作命令在服務啟動的時候使用這些命令就可以還原數據庫調整AOF持久化策略,可以在服務出現故障時,不丟失任何數據,也可以丟失一秒的數據。相對于RDB方式損失要小得多

(1)AOF寫入機制

  • AOF方式不能保證絕對不丟失數據

  • 目前常見的操作系統中,執行系統調用write函數,將一些內容寫入到某個文件里面時,為了提高效率,系統通常不會直接將內容寫入硬盤里面,而是先將內容放入一個內存緩沖區(buffer)里面,等到緩沖區被填滿,或者用戶執行fsync調用和fdatasync調用時才將儲存在緩沖區里的內容真正的寫入到硬盤里,而在未寫入磁盤之前,數據可能會丟失。

(2) 寫入磁盤的策略

在redis.conf文件中的appendfsync選項,這個選項的值可以是always、everysec或者no

  • Always:服務器每寫入一個命令,就調用一次fdatasync,將緩沖區里面的命令寫入到硬盤。這種模式下,服務器出現故障,也不會丟失任何已經成功執行的命令數據

  • Everysec(默認):服務器每一秒重調用一次fdatasync,將緩沖區里面的命令寫入到硬盤。這種模式下,服務器出現故障,最多只丟失一秒鐘內的執行的命令數據

  • No:服務器不主動調用fdatasync,由操作系統決定何時將緩沖區里面的命令寫入到硬盤。這種模式下,服務器遭遇意外停機時,丟失命令的數量是不確定的

運行速度:always的速度慢,everysec和no都很快

(3)AOF重寫機制

  • AOF文件過大

  • 合并重復的操作,AOF會使用盡可能少的命令來記錄

重寫的過程

  • folk一個子進程負責重寫AOF文件

  • 子進程會創建一個臨時文件寫入AOF信息

  • 父進程會開辟一個內存緩沖區接收新的寫命令

  • 子進程重寫完成后,父進程會獲得一個信號,將父進程接收到的新的寫操作由子進程寫入到臨時文件中

  • 新文件替代舊文件

注意:如果寫入操作的時候出現故障導致命令寫半截,可以使用redis-check-aof工具修復

(4)AOF重寫觸發

  • 手動:客戶端向服務器發送BGREWRITEAOF命令

  • 自動:配置文件中的選項,自動執行BGREWRITEAOF命令

    • auto-aof-rewrite-min-size < size >,觸發AOF重寫所需的最小體積:只要在AOF文件的體積大于等于size時,才會考慮是否需要進行AOF重寫,這個選項用于避免對體積過小的AOF文件進行重寫

    • auto-aof-rewrite-percentage < percent >,指定觸發重寫所需的AOF文件體積百分比:當AOF文件的體積大于auto-aof-rewrite-min-size指定的體積,并且超過上一次重寫之后的AOF文件體積的percent %時,就會觸發AOF重寫。(如果服務器剛剛啟動不久,還沒有進行過AOF重寫,那么使用服務器啟動時載入的AOF文件的體積來作為基準值)。將這個值設置為0表示關閉自動AOF重寫

舉例:

	auto-aof-rewrite-percentage 100
	auto-aof-rewrite-min-size 64mb
	
	當AOF文件大于64MB時候,可以考慮重寫AOF文件
	只有當AOF文件的增量大于起始size的100%時,
						也就是文件大小翻了一倍時,啟動重寫

(5)AOF持久化的優缺點

優點

  • 寫入機制,默認fysnc每秒執行,性能很好不阻塞服務,最多丟失一秒的數據

  • 重寫機制,優化AOF文件

  • 如果誤操作了(例如:FLUSHALL等),只要AOF未被重寫,停止服務移除AOF文件尾部FLUSHALL命令,重啟Redis,可以將數據集恢復到 FLUSHALL 執行之前的狀態

缺點

  • 相同數據集,AOF文件體積較RDB大了很多

  • 恢復數據庫速度叫RDB慢(文本,命令重演)

八、idea使用Jedis連接Redis

首先需要在idea中的maven中的依賴配置文件pom.xml中導入jedis的依賴包,這里北使用的3.0版本的redis,那么導入的jedis依賴也是對應版本的;若是其它版本可以在maven倉庫中選擇對應版本,鏈接地址:https://mvnrepository.com/artifact/redis.clients/jedis

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.0.0</version>
        </dependency>

idea中建立連接

import redis.clients.jedis.Jedis;/**
 * jdbc:是一種連接關系型數據的規范
 * redis: 是kv結構的非關系型數據庫(沒有sql語句),使用jedis連接
 */public class jedistest {
    public static void main(String[] args) {
        //創建redis連接
        Jedis jedis = new Jedis("master", 6379);
        //獲取數據
        String name = jedis.get("name");
        System.out.println(name);
    }}

Redis環境搭建和使用的方法

到此,關于“Redis環境搭建和使用的方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

子长县| 青州市| 常州市| 新乐市| 乌拉特前旗| 金门县| 喀什市| 宣威市| 休宁县| 革吉县| 中阳县| 望城县| 谢通门县| 南通市| 涟源市| 丰城市| 太康县| 永寿县| 仪征市| 洪雅县| 赞皇县| 焉耆| 镇康县| 麻阳| 乌拉特中旗| 广汉市| 灵宝市| 电白县| 上思县| 集贤县| 阜南县| 库伦旗| 大荔县| 威海市| 湟中县| 阳信县| 涞源县| 墨竹工卡县| 南阳市| 页游| 乌海市|