亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

redis4.0入門小結

2020-10-28 21:31:24
字體:
來源:轉載
供稿:網友

前言

redis作為nosql家族中非常熱門的一員,也是被大型互聯網公司所青睞,無論你是開發、測試或者運維,學習掌握它總會為你的職業生涯增色添彩。

當然,你或多或少已經了解redis,但是你是否了解其中的某些細節,本片文章將詳細介紹redis基礎,后續也會介紹其高級部分如、持久化、復制、集群等內容,希望對你有所幫助。

自redis3.0發布已經3年了,redis目前官方提供的redis穩定版本是4.0,以下示例均在4.0版本上進行。

一、redis簡介

概述

redis(REmote DIctionary Server)是一個由Salvatore Sanfilippo寫key-value存儲系統,它由C語言編寫、遵守BSD協議、支持網絡、可基于內存亦可持久化的日志型、Key-Value類型的數據庫,并提供多種語言的API。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步,redis在3.0版本推出集群模式。

特點、優勢

  • k、v鍵值存儲以及數據結構存儲(如列表、字典)
  • 所有數據(包括數據的存儲)操作均在內存中完成
  • 單線程服務(這意味著會有較多的阻塞情況),采用epoll模型進行請求響應,對比nginx
  • 支持主從復制模式,更提供高可用主從復制模式(哨兵)
  • 去中心化分布式集群
  • 豐富的編程接口支持,如Python、Golang、Java、php、Ruby、Lua、Node.js
  • 功能豐富,除了支持多種數據結構之外,還支持事務、發布/訂閱、消息隊列等功能
  • 支持數據持久化(AOF、RDB)

對比memcache

  • memcache是一個分布式的內存對象緩存系統,并不提供持久存儲功能,而redis擁有持久化功能
  • memcache數據存儲基于LRU(簡單說:最近、最少使用key會被剔除),而redis則可以永久保存(服務一直運行情況下)
  • memcache是多線程的(這是memcache優勢之一),也就意味著阻塞情況少,而redis是單線程的,阻塞情況相對較多
  • 兩者性能上相差不大
  • memcache只支持簡單的k、v數據存儲,而redis支持多種數據格式存儲。
  • memcache是多線程、非阻塞IO復用網絡模型,而redis是單線程IO復用模型

二、開始

源碼部署

yum install gcc -y #安裝C依賴wget http://download.redis.io/redis-stable.tar.gz #下載穩定版本tar zxvf redis-stable.tar.gz #解壓cd redis-stablemake PREFIX=/opt/app/redis install  #指定目錄編譯,也可以不用指定make installmkdir /etc/redis  #建立配置目錄cp redis.conf /etc/redis/6379.conf # 拷貝配置文件cp utils/redis_init_script /etc/init.d/redis #拷貝init啟動腳本針對6.X系統chmod a+x /etc/init.d/redis #添加執行權限vi /etc/redis/6379.conf #修改配置文件: bind 0.0.0.0   #監聽地址maxmemory 4294967296  #限制最大內存(4G):daemonize yes  #后臺運行####啟動與停止/etc/init.d/redis start/etc/init.d/redis stop

查看是否成功安裝

#執行客戶端工具redis-cli #輸入命令info127.0.0.1:6379> info# Serverredis_version:4.0.10redis_git_sha1:00000000redis_git_dirty:0redis_build_id:cf83e9c690dbed33redis_mode:standaloneos:Linux 2.6.32-642.el6.x86_64 x86_64arch_bits:64multiplexing_api:epoll

二進制文件說明

redis安裝完成后會有以下可執行文件(window下是exe文件)生成,下面是各個文件的作用。

redis-server      #Redis服務器和Sentinel服務器,啟動時候可使用--sentinel指定為哨兵redis-cli       #Redis命令行客戶端 redis-benchmark    #Redis性能測試工具 redis-check-aof   #AOF文件修復工具 redis-check-dump   #RDB文件檢測工具 redis-sentinel    #Sentinel服務器,4.0版本已經做了軟鏈接到redis-server

三、配置詳解

redis所有的配置參數都可以通過客戶端通過“CONFIG GET 參數名” 獲取,參數名支持通配符,如*代表所有。所得結果并按照順序分組,第一個返回結果是參數名,第二個結果是參數對應的值。

除了查看配置還可以使用CONFIG SET修改配置,寫入配置文件使用CONFIG REWRITE,使用時是需要注意某些關于服務配置參數慎重修改,如bind。

配置參數以及解釋,需要注意的是,有些配置是4.0.10新增的,有些配置已經廢除,如vm相關配置,和集群相關配置在集群篇章在進行補充。

logfile#日志文件位置及文件名稱bind 0.0.0.0#監聽地址,可以有多個 如bind 0.0.0.0 127.0.0.1daemonize yes#yes啟動守護進程運行,即后臺運行,no表示不啟用pidfile /var/run/redis.pid # 當redis在后臺運行的時候,Redis默認會把pid文件在在/var/run/redis.pid,也可以配置到其他地方。# 當運行多個redis服務時,需要指定不同的pid文件和端口port 6379# 指定redis運行的端口,默認是6379unixsocket #sock文件位置unixsocketperm#sock文件權限timeout 0# 設置客戶端連接時的超時時間,單位為秒。當客戶端在這段時間內沒有發出任何指令,那么關閉該連接, 0是關閉此設置loglevel debug# 指定日志記錄級別,Redis總共支持四個級別:debug、verbose、notice、warning,默認為verboselogfile ""# 日志文件配置,默認值為stdout,標準輸出,若后臺模式會輸出到/dev/nullsyslog-enabled# 是否以syslog方式記錄日志,yes開啟no禁用,與該配置相關配置syslog-ident 和syslog-facility local0 分別是指明syslog的ident和facilitydatabases 16#配置可用的數據庫個數,默認值為16,默認數據庫為0,數據庫范圍在0-(database-1)之間always-show-logo yes #4.0以后新增配置#是否配置日志顯示redis徽標,yes顯示no不顯示################################ 快照相關配置 #################################save 900 1save 300 10save 60 10000#配置快照(rdb)促發規則,格式:save <seconds> <changes>#save 900 1 900秒內至少有1個key被改變則做一次快照#save 300 10 300秒內至少有300個key被改變則做一次快照#save 60 10000 60秒內至少有10000個key被改變則做一次快照dbfilename dump.rdb#rdb持久化存儲數據庫文件名,默認為dump.rdbstop-write-on-bgsave-error yes #yes代表當使用bgsave命令持久化出錯時候停止寫RDB快照文件,no則代表繼續寫rdbchecksum yes#開啟rdb文件校驗dir "/etc"#數據文件存放目錄,rdb快照文件和aof文件都會存放至該目錄################################# 復制相關配置參數 #################################slaveof <masterip> <masterport> #設置該數據庫為其他數據庫的從數據庫,設置當本機為slave服務時,設置master服務的IP地址及端口,在Redis啟動時,它會自動從master進行數據同步masterauth <master-password>#主從復制中,設置連接master服務器的密碼(前提master啟用了認證)slave-serve-stale-data yes# 當從庫同主機失去連接或者復制正在進行,從機庫有兩種運行方式:# 1) 如果slave-serve-stale-data設置為yes(默認設置),從庫會繼續相應客戶端的請求# 2) 如果slave-serve-stale-data是指為no,除了INFO和SLAVOF命令之外的任何請求都會返回一個錯誤"SYNC with master in progress"repl-ping-slave-period 10#從庫會按照一個時間間隔向主庫發送PING命令來判斷主服務器是否在線,默認是10秒repl-timeout 60#設置主庫批量數據傳輸時間或者ping回復時間間隔超時時間,默認值是60秒# 一定要確保repl-timeout大于repl-ping-slave-periodrepl-backlog-size 1mb#設置復制積壓大小,只有當至少有一個從庫連入才會釋放。slave-priority 100#當主庫發生宕機時候,哨兵會選擇優先級最高的一個稱為主庫,從庫優先級配置默認100,數值越小優先級越高min-slaves-to-write 3min-slaves-max-lag 10#設置某個時間斷內,如果從庫數量小于該某個值則不允許主機進行寫操作,以上參數表示10秒內如果主庫的從節點小于3個,則主庫不接受寫請求,min-slaves-to-write 0代表關閉此功能。################################## 安全相關配置 ###################################requirepass#客戶端連接認證的密碼,默認為空,即不需要密碼,若配置則命令行使用AUTH進行認證maxclients 10000# 設置同一時間最大客戶端連接數,4.0默認10000,Redis可以同時打開的客戶端連接數為Redis進程可以打開的最大文件描述符數,# 如果設置 maxclients 0,表示不作限制。# 當客戶端連接數到達限制時,Redis會關閉新的連接并向客戶端返回max number of clients reached錯誤信息maxmemory 4gb#設置最大使用的內存大小maxmemory-policy noeviction#設置達到最大內存采取的策略:# volatile-lru -> 利用LRU算法移除設置過過期時間的key (LRU:最近使用 Least Recently Used )# allkeys-lru -> 利用LRU算法移除任何key# volatile-random -> 移除設置過過期時間的隨機key# allkeys->random -> remove a random key, any key# volatile-ttl -> 移除即將過期的key(minor TTL)# 4.0默認noeviction代表不刪除任何key,只在寫操作時候返回錯誤。maxmemory-samples 5#LRU,LFU等算法樣本設置,默認5個key############################## AOF相關配置###############################appendonly no# 設置AOF持久化,yes開啟,no禁用,開啟后redis會把所接收到的每一次寫操作請求都追加到appendonly.aof文件中,當redis重新啟動時,會從該文件恢復出之前的狀態。# 但是這樣會造成appendonly.aof文件過大,所以redis還支持了BGREWRITEAOF指令,對appendonly.aof 進行重寫。appendfilename "appendonly.aof"#設置AOF文件名appendfsync everysec# AOF文件寫策略,Redis支持三種同步AOF文件的策略:# no: 不進行同步,交給操作系統去執行 ,速度較快# always: always表示每次有寫操作都調用fsync方法強制內核將該寫操作寫入到文件,速度會慢, 但是安全,因為每次寫操作都在AOF文件中.# everysec: 表示對寫操作進行累積,每秒同步一次,折中方案.# 默認是"everysec",按照速度和安全折中這是最好的。no-appendfsync-on-rewrite no# AOF策略設置為always或者everysec時,后臺處理進程(后臺保存或者AOF日志重寫)會執行大量的I/O操作# 在某些Linux配置中會阻止過長的fsync()請求。注意現在沒有任何修復,即使fsync在另外一個線程進行處理,為了減緩這個問題,可以設置下面這個參數no-appendfsync-on-rewriteauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb#當AOF文件增長到一定大小的時候Redis能夠調用BGREWRITEAOF對日志文件進行重寫,它是這樣工作的:Redis會記住上次進行些日志后文件的大小(如果從開機以來還沒進行過重寫,那日子大小在開機的時候確定)。#基礎大小會同現在的大小進行比較。如果現在的大小比基礎大小大制定的百分比,重寫功能將啟動# 同時需要指定一個最小大小用于AOF重寫,這個用于阻止即使文件很小但是增長幅度很大也去重寫AOF文件的情況# 設置 percentage 為0就關閉這個特性#auto-aof-rewrite-percentage 代表AOF文件每次重寫文件大?。ㄒ园俜謹荡恚?,100表示百分之百,即當文件增加了1倍(100%),則開始重寫AOF文件#auto-aof-rewrite-min-size 設置最小重寫文件大小,避免文件小而執行太多次的重寫aof-load-truncated yes#當redis突然運行崩潰時,會出現aof文件被截斷的情況,Redis可以在發生這種情況時退出并加載錯誤,以下選項控制此行為。#如果aof-load-truncated設置為yes,則加載截斷的AOF文件,Redis服務器啟動發出日志以通知用戶該事件。#否則,如果該選項設置為no,則服務器將中止并顯示錯誤并停止啟動。當該選項設置為no時,用戶需要在重啟之前使用“redis-check-aof”實用程序修復AOF文件在進行重啟################################## 慢查詢配置 ###################################slowlog-log-slower-than 10000 #Redis Slow Log 記錄超過特定執行時間的命令。執行時間不包括I/O計算比如連接客戶端,返回結果等,只是命令執行時間,可以通過兩個參數設置slow log:一個是告訴Redis執行超過多少時間被記錄的參數slowlog-log-slower-than(微秒,因此1000000代表一分鐘#另一個是slow log 的長度。當一個新命令被記錄的時候最早的命令將被從隊列中移除 slowlog-max-len 128#慢查詢命令記錄隊列長度設置,該隊列占用內存,可以使用SLOWLOG RESET清空隊列############################### 高級配置 ###############################hash-max-zipmap-entries 512hash-max-zipmap-value 64# 當hash中包含超過指定元素個數并且最大的元素沒有超過臨界時,hash將以一種特殊的編碼方式(大大減少內存使用)來存儲,這里可以設置這兩個臨界值# Redis Hash對應Value內部實際就是一個HashMap,實際這里會有2種不同實現,# 這個Hash的成員比較少時Redis為了節省內存會采用類似一維數組的方式來緊湊存儲,而不會采用真正的HashMap結構,對應的value redisObject的encoding為zipmap,當成員數量增大時會自動轉成真正的HashMap,此時encoding為ht。list-max-ziplist-size -2#Lists也以特殊方式編碼,以節省大量空間。??梢灾付總€內部列表節點允許的條目數#作為固定的最大大小或最大元素數。#對于固定的最大大小,使用-5到-1表示:#-5:最大大小:64 Kb < - 不建議用于正常工作負載#-4:最大尺寸:32 Kb < - 不推薦#-3:最大尺寸:16 Kb < - 可能不推薦#-2:最大尺寸:8 Kb < - 好#-1:最大尺寸:4 Kb < - 良好#正數意味著存儲_exactly_元素數量#每個列表節點。#性能最高的選項通常為-2(8 Kb大?。┗?1(4 Kb大?。﹝set-max-ziplist-entries 128zset-max-ziplist-value 64# list數據類型多少節點以下會采用去指針的緊湊存儲格式。# list數據類型節點值大小小于多少字節會采用緊湊存儲格式。activerehashing yes# Redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進行重新hash,可以降低內存的使用# 當你的使用場景中,有非常嚴格的實時性需要,不能夠接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置為no。# 如果沒有這么嚴格的實時性要求,可以設置為yes,以便能夠盡可能快的釋放內存client-output-buffer-limit normal 0 0 0client-output-buffer-limit slave 256mb 64mb 60client-output-buffer-limit pubsub 32mb 8mb 60#客戶端輸出緩沖區限制可用于強制斷開客戶端,由于某種原因,沒有足夠快地從服務器讀取數據,常見的原因是Pub / Sub客戶端不能像很快的消費一條消息,可以為三種不同類型的客戶端設置不同的限制:#normal - >普通客戶端,包括MONITOR客戶端#subve - >從服務器客戶端#pubsub - >客戶端訂閱了至少一個pubsub通道或模式#設置方法:client-output-buffer-limit 軟限制大小 硬限制大小 秒數#當客戶端達到硬限制大小則立即斷開連接,當客戶端達到軟限制時候并且在設置的秒數緩沖大小任然超了,則在設置的秒數后斷開連接

四、數據類型以及相關操作

通常使用redis不外乎使用其常用的5中數據類型:string、list、hash、set、sorted_set,在3.2版本以后新添加geo經緯度支持,以下將對其類型的常用操作做說明。

命令使用前言

通大多數據庫一樣,redis所有的命令提供了幫助,可以使用help +命令名稱查看其使用方法,幫助信息中不僅有命令用法,還有命令始于版本信息,分組等。

為了友好的使用,redis還將所有命令都進行了分組,同時使用help+@+組名進行查看每個組中所有命令,以下是所有分組信息。

上面以及介紹如何查看命令使用方法,所以在以下數據類型操作時候,只舉例常用的命令,更多命令參考https://redis.io/commands

注意:redis在3.2版本新增geo數據類型。

generic    #一般命令組,對大多數類型適用string    #字符串類型命令組,使用所有字符串類型list     #列表類型命令組set      #集合類型命令組sorted_set  #有序集合命令組hash     #hash操作命令組pubsub    #發布命令組transactions #事務操作命令組connection  #連接相關命令組server    #服務器相關命令組scripting   #lua 腳本命令組hyperloglog  #hyperloglog類型命令組,redis在 2.8.9 版本添加了 HyperLogLog 結構cluster    #集群相關命令組geo      #經緯度相關命令組,適用于3.2.0以后的版本

示例:查看事務操作所有命令

key操作

常用:

DEL key #刪除某個keyKEYS pattern #查看符合正則的所有keyEXISTS key [key ...] #判斷某個key是否存在,可支持多個,返回存在的個數EXPIRE key seconds #刷新某個key過期時間MOVE key db #移動key到某個數據庫

示例:

string操作

字符串操作中需要注意的是,redis中的整型也當作字符串處理。

常用:

SET key value [EX seconds] [PX milliseconds] [NX|XX] #設置key為指定的字符串值。#參數:#EX seconds 亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

正在播放亚洲1区| 亚洲成av人影院在线观看| 久久天天躁夜夜躁狠狠躁2022| www.亚洲一区| 日韩欧美中文免费| 97涩涩爰在线观看亚洲| 日韩av片永久免费网站| 国产视频在线观看一区二区| 性色av一区二区三区在线观看| 午夜精品久久久久久久99热| 久久久99免费视频| 久久久久久久久爱| 欧美日韩裸体免费视频| 欧洲美女7788成人免费视频| 久久伊人91精品综合网站| 青青草国产精品一区二区| 欧美—级a级欧美特级ar全黄| 久久精品国产v日韩v亚洲| 日韩一级裸体免费视频| 91性高湖久久久久久久久_久久99| 亚洲伊人一本大道中文字幕| 欧美性视频在线| 亚洲美女av在线| 亚洲男人av电影| 久久久综合免费视频| 草民午夜欧美限制a级福利片| 97不卡在线视频| 欧美二区乱c黑人| 视频直播国产精品| 亚洲图片在线综合| 国模gogo一区二区大胆私拍| 国产成人精品免高潮在线观看| 久久精品国产清自在天天线| 国产精品扒开腿做| 日韩精品丝袜在线| 久久免费视频网| 欧美疯狂做受xxxx高潮| 国产丝袜一区二区三区免费视频| 亚洲国产日韩欧美在线图片| 亚洲视频axxx| 亚洲乱码国产乱码精品精天堂| 欧美精品电影免费在线观看| 成人欧美一区二区三区黑人孕妇| 欧美视频不卡中文| 国产精品一香蕉国产线看观看| 亚洲午夜精品视频| 一本色道久久88综合亚洲精品ⅰ| 亚洲国产成人久久综合一区| 91精品啪在线观看麻豆免费| 97国产精品免费视频| 午夜精品久久久久久久99热| 亚洲精品影视在线观看| 欧美激情二区三区| 国产亚洲视频中文字幕视频| 久久免费观看视频| 中文字幕日本欧美| 久久久视频精品| 日韩在线观看免费全集电视剧网站| 精品毛片三在线观看| xxxx欧美18另类的高清| 91在线直播亚洲| 亚洲欧洲av一区二区| 78m国产成人精品视频| 国产午夜精品麻豆| 日韩在线观看网址| 按摩亚洲人久久| 久久久精品在线观看| 国产精品人成电影| 国产亚洲欧美日韩一区二区| 精品久久久久久久久久ntr影视| 亚洲自拍欧美另类| 欧美日韩在线观看视频小说| 亚洲欧美成人一区二区在线电影| 久久福利网址导航| 欧美激情在线狂野欧美精品| 久久精品一本久久99精品| 国产91av在线| 日韩精品中文在线观看| 91大神福利视频在线| 亚洲免费影视第一页| 国产亚洲一区二区精品| 亚洲欧美日韩中文视频| 欧美精品videosex牲欧美| 日韩精品中文在线观看| 97香蕉久久夜色精品国产| 日韩亚洲欧美成人| 亚洲缚视频在线观看| 91精品综合久久久久久五月天| 亚洲最新av网址| 91九色国产在线| 欧美精品福利在线| 欧美精品www在线观看| 国产亚洲欧美日韩美女| 久久久噜噜噜久久中文字免| 久久99久久久久久久噜噜| 亚洲人成免费电影| 黄色一区二区在线观看| 国产精品美女久久久久久免费| 亚洲最大福利视频网站| 欧美日韩免费在线观看| 亚洲网站在线观看| 好吊成人免视频| 成人av在线亚洲| 国产精品国产福利国产秒拍| 欧洲s码亚洲m码精品一区| 欧美亚洲另类视频| 亚洲老头同性xxxxx| 国产精品亚洲自拍| 欧美亚洲在线视频| 久久综合网hezyo| 精品免费在线观看| 亚洲成人网av| 日韩国产一区三区| 日本aⅴ大伊香蕉精品视频| 国产精品美女免费| 中文字幕一区二区三区电影| 亚洲黄色www| 日韩有码在线播放| 国产精品久久久久久久午夜| 亚洲丝袜一区在线| 亚洲图片欧洲图片av| 中文字幕一区二区三区电影| 欧美精品18videosex性欧美| 亚洲a级在线观看| 欧美一级片在线播放| 欧美日韩在线观看视频小说| 免费av一区二区| 久久影视三级福利片| 国产精品高清免费在线观看| 亚洲精品有码在线| 日韩在线观看视频免费| 亚洲男人的天堂网站| 日韩高清中文字幕| 国产91精品黑色丝袜高跟鞋| 亚洲欧美精品伊人久久| 欧美色欧美亚洲高清在线视频| 久久国产精品影片| 成人精品一区二区三区电影免费| 日本精品视频网站| 久久久久这里只有精品| 亚洲高清av在线| 人体精品一二三区| 久久综合伊人77777蜜臀| 国产精品香蕉在线观看| 2018国产精品视频| 欧美日韩国产页| 国产精品视频播放| 欧美成人全部免费| 亚洲欧洲av一区二区| 亚洲一区二区三区四区在线播放| 国产精品爽爽ⅴa在线观看| 久久精品国产2020观看福利| 这里只有精品在线观看| 欧美体内谢she精2性欧美| 91亚洲精品一区二区| 国产日韩av在线播放| 亚洲电影免费观看高清完整版| 成人免费视频xnxx.com| 中文字幕日韩欧美在线| 性欧美xxxx| 国产精品免费看久久久香蕉| 日韩精品在线免费| 国产a级全部精品| 欧美黑人性猛交|