redis入門

redis是什么

一種nosql數(shù)據(jù)庫,基于鍵-值型的存儲。
redis的所有功能都是在內(nèi)存中完成,所以性能比較高。

redis的優(yōu)勢

  1. 豐富的數(shù)據(jù)類型
  • 字符串類型 string
  • 哈希類型 hash
  • 列表類型 list
  • 集合類型 set
  • 有序集合類型 sortedset
  1. 高性能
  • 100萬較小的鍵存儲字符串,大概消耗100M內(nèi)存
  • 由于redis是單線程,如果服務(wù)器主機上有多個CPU,只有一個能夠使用,但并不意味著CPU會成為瓶頸,因為redis是一個比較簡單的K-V數(shù)據(jù)存儲,CPU通常不會成為瓶頸的
  • 在常見的linux服務(wù)器上,500K(50萬)的并發(fā),只需要一秒鐘處理,如果主機硬件較好的情況下,每秒鐘可以達到上百萬的并發(fā)

redis的應(yīng)用場景

  • 緩存(數(shù)據(jù)查詢、短連接、新聞內(nèi)容、商品內(nèi)容等等)
  • 聊天室的在線好友列表
  • 任務(wù)隊列。(秒殺、搶購、12306等等)
  • 應(yīng)用排行榜
  • 網(wǎng)站訪問統(tǒng)計
  • 數(shù)據(jù)過期處理(可以精確到毫秒)
  • 分布式集群架構(gòu)中的session分離
下載安裝
  1. Linux下源碼安裝
# 下載安裝包
wget http://download.redis.io/releases/redis-4.0.9.tar.gz

# 解壓到/usr/local/redis目錄
tar xzf redis-4.0.9.tar.gz
mv ./redis-4.0.9 /usr/local/redis/
cd /usr/local/redis/

# 生成
make MALLOC=libc
# 將redis命令安裝到/usr/local/bin目錄
make install

# 安裝完成后,我們進入目錄/usr/local/bin中查看
cd /usr/local/bin  
ls -all

*   redis-server redis服務(wù)器
*   redis-cli redis命令行客戶端
*   redis-benchmark redis性能測試工具
*   redis-check-aof AOF文件修復(fù)工具
*   redis-check-rdb RDB文件檢索工具

# 移動配置文件到/etc/redis目錄下
cp /usr/local/redis/redis.conf /etc/redis/

# 啟動服務(wù)
/usr/local/bin/redis-server /etc/redis/redis.conf

# 客戶端連接
./redis-cli -h 127.0.0.1 -p 6379 -a "123456"

# 關(guān)閉redis服務(wù)端
./redis-cli -h 127.0.0.1 -p 6379 -a "123456"  shutdown

# 查看redis運行狀態(tài)
ps aux|grep redis
  • rpm方式安裝
yum -y localinstall redis-4.0.6-1.el7.remi.x86_64.rpm
systemctl start redis 
  • Docker方式安裝
# 拉取鏡像
docker pull redis:5.0.5-alpine
# 根據(jù)鏡像創(chuàng)建容器
docker run -d -p 6379:6379 --name redis-01 redis:5.0.5-alpine --requirepass "mypassword"
redis配置

/etc/redis.conf

# 基礎(chǔ)配置
daemonize no  # 表示redis并不會運行成為一個守護進程,如果需要運行成為一個守護進程,則把no,改為yes即可
port 6379   # 監(jiān)聽端口
# 指定tcp-backlog的長度
# 任何的tcp服務(wù)都有可能使用到tcp-backlog功能,backlog是一個等待隊列
# 比如:redis的并發(fā)很高時,redis有可能運行不過來時,就連接本地緩存等隊列都滿了以后,
# 就會使用額外的存儲地方,把新來的請求暫存下來,而這個位置則稱為backlog
tcp-backlog 511 #
bind 127.0.0.1 #監(jiān)聽的地址,默認監(jiān)聽在127.0.0.1地址上,可以指定為0.0.0.0地址,或某個特定的地址,或可以指定多個,使用空格分隔即可
unixsocket /tmp/redis.sock  #指定使用sock文件通信及sock文件位置,如果服務(wù)端和客戶都在同一臺主機上,建議打開此項,基于sock方式通信可以直接在內(nèi)存中交換,數(shù)據(jù)不用再經(jīng)過TCP/TP協(xié)議棧進行封裝、拆封
timeout 0       #表示當客戶端連接成功后,空閑(非活躍、或沒有任何數(shù)據(jù)交互)多長時間則連接超時,0表示不啟用此功能
tcp-keepalive 0     //定義是否啟用tcp-keepalive功能
loglevel notice     //定義日志級別
logfile /var/log/redis/redis.log    //定義日志文件
databases 16    //定義redis默認有多少個databases,但是在分布式中,只能使用一個
# 持久化
save <seconds> <changes>    //使用save指令,并指定每隔多少秒,如果發(fā)生多大變化,進行存儲
示例:
save 900 1      //表示在900秒(15分鐘內(nèi)),如果至少有1個鍵發(fā)生改變,則做一次快照(持久化)
save 300 10     //表示在300秒(5分鐘內(nèi)),如果至少有10個鍵發(fā)生改變,則做一次快照(持久化)
save 60 10000   //表示在60秒(1分鐘內(nèi)),如果至少有10000個鍵發(fā)生改變,則做一次快照(持久化)
save ""     //如果redis中的數(shù)據(jù)不需做持久化,只是作為緩存,則可以使用此方式關(guān)閉持久化功能
# 主從配置
slaveof <masterip> <masterport>     //此項不啟用時,則為主,如果啟動則為從,但是需要指明主服務(wù)器的IP,端口
masterauth <master-password>    //如果主服務(wù)設(shè)置了密碼認證,那么從的則需要啟用此項并指明主的認證密碼
slave-read-only yes     //定義從服務(wù)對主服務(wù)是否為只讀(僅復(fù)制)
# 定義與連接和資源限制相關(guān)的配置
maxclients 10000        //定義最大連接限制(并發(fā)數(shù))
maxmemory <bytes>       //定義使用主機上的最大內(nèi)存,默認此項關(guān)閉,表示最大將使用主機上的最大可用內(nèi)存
# 定義AOF的持久化功能相關(guān)配置,一旦有某一個鍵發(fā)生變化,將修改鍵的命令附加到命令列表的文件中,類似于MySQL二進制日志
appendonly no       //定義是否開啟此功能,no表示關(guān)閉,yes表示開啟
說明:RDB和AOF兩種持久功能可以同時啟用,兩者不影響
登陸redis
redis-cli -h
redis-cli -h 192.168.1.63       //連接redis,默認不啟用密碼認證
redis-cli   //使用redis-cli直接連接,默認連接是127.0.0.1 IP
exit    //退出連接

選項:
-h <hostname>   指定主機IP
-p <port>       指定端口socket文件進行通信
-s <socket>     指定socket文件,如果客戶端和服務(wù)端都在同一臺主機,可以指定socket文件進行通信
-a <password>   指定認證密碼
-r <repeat>     連接成功后指定運行的命令N次
-i <interval>   連接成功后每個命令執(zhí)行完成等待時間,使用-i選項指定
-n <db>         
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容