溫馨提示×

溫馨提示×

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

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

NoSQL -- redis 安裝 主從 配置詳解 常用命令

發布時間:2020-06-24 20:02:02 來源:網絡 閱讀:428 作者:Ohimma 欄目:數據庫

Redis 也是key-value存儲系統,官方站點 http://redis.io,但相對于memcache,有如下優勢:

1、支持更多地value類型(string、hash、lists、sets、sorted sets等);

2、支持數據持久化,預防服務重啟后需要重新存儲;

redis 有兩種文件格式:全量數據(RDB=redis database)、增量請求(aof=append only file)。

前者是將內存中的數據寫進磁盤,便于下次讀取文件時直接進行加載,快照形式;

后者是將redis執行的指令記錄下來,重啟時再執行一遍,類似于binlog存儲;

兩種方式可以同時用,此時重啟,會優先采用AOF進行恢復;

兩種方式都不用,redis就變成了內存數據庫,像memcache;

redis 的存儲:內存存儲、磁盤存儲、log文件三部分

 安  裝 

首先wget下載源碼包,https://code.google.com/archive/p/redis/downloads 

舉例:wget https://codeload.github.com/antirez/redis/tar.gz/2.8.21

解壓:tar zxvf 2.8.21  && cd  redis-2.8.21 

yum install -y gcc epel-release; yum install -y jemalloc-devel    //make 之前安裝些工具

編譯:make    //因為makefile已經寫好,不需要再編譯,直接make就好

NoSQL -- redis 安裝 主從 配置詳解 常用命令

error:如果make出現錯誤,提示找不到一些東西    #我用的centos7,倒是沒出現錯誤

解決:cd deps && make hiredis lua jemalloc linenoise && cd ../ && make

安裝:make  PREFIX=/usr/local/redis install   //為方便管理,指定了下目錄

創建:mkdir /usr/local/redis/etc  && /usr/local/redis/var

wget http://www.apelearn.com/study_v2/.redis_init -O /etc/init.d/redis   //老師的啟動腳本

用戶:useradd -s /sbin/nologin redis

權限:chmod 777 /usr/local/redis/var  && chmod 755 /etc/init.d/redis

自啟:chkconfig --add redis  && chkconfig redis on && service redis start

數據類型

string:可以理解為memcache一樣類型,一個key對應一個value,功能比mem豐富,最簡單類型;

set:集合,常見于取交并差集,比如微博中的共同關注人、共同粉絲,qq的好友標簽等功能;

lists:鏈表結構,功能push、pop、獲取范圍等,輕松實現排行等功能;

hash:哈希,mem中將結構化信息打包成hashmap,序列化后存儲在一個字符中,比如年齡性別等;

sorted set:有序集合,比set多了權重參數score,使其能按score進行排列,插入時也有順序;

配 置 文 件 

###通用配置
daemonize no            #默認情況下,redis并不是以daemon形式來運行的。
pidfile /path/to/redis.pid     #當以daemon形式運行時,指向生成的pid文件
bind 192.168.1.2 10.8.4.2     #指定綁定的ip,可以有多個,空格分隔
port 6379              #指定監聽端口
unixsocket /tmp/redis.sock     #也可以監聽socket
unixsocketperm 755         #當監聽socket時可以指定權限為755
timeout 0              #客戶端時間內沒向服務端發請求,服務端通過此值關閉連接,0表示永不關閉
tcp-keepalive 0           #TCP連接?;畈呗?,檢測客戶端對否掛掉,0表示不開啟
loglevel notice           #日志級別,有四種debug, verbose, notice, warning
logfile “”            #定義日志路徑,“”表示默認
syslog-ident redis         #通過syslog-enabled來控制打印到syslog,此值指定syslog里的日志標志
syslog-facility local0       #指定syslog的設備,可以是USER或者local0-local7
databases 16            #設置數據庫的總數量

###快照配置
save 900 1                  #表示每15分鐘且至少有1個key改變,就觸發一次持久化 
save 300 10                  #表示每5分鐘且至少有10個key改變,就觸發一次持久化
save 60 10000                  #表示每60秒至少有10000個key改變,就觸發一次持久
save “”                    #這樣可以禁用rdb持久化
stop-writes-on-bgsave-error yes   #寫入磁盤失敗后,馬上停止寫操作
rdbcompression yes           #是否要壓縮
rdbchecksum yes             #是否進行數據校驗
dbfilename dump.rdb            #定義快照文件的名字
dir /usr/local/redis         #定義快照文件儲存路勁

###安全相關配置
requirepass teng            #設置redis-server的密碼  
##測試:redis-cli  && get key1  重啟后:redis-cli -a teng  &&  get key1 會不一樣輸出
rename-command CONFIG  teng.config     
##將CONFIG命令更名為teng.config,避免誤操作,但如果使用了AOF持久化,建議不要啟用該功能
rename-command CONFIG “”      #也可以后面定義為空,這樣就禁掉了該CONFIG命令

###限制相關配置
maxclients 10000            #限制最大客戶端連接數
maxmemory <bytes>           #設定最大內存使用數,單位是byte
maxmemory-policy volatile-lru     #指定內存移除規則
maxmemory-samples 3          #LRU和TTL算法都是估算值。所以你可以設置樣本的大小。
                    #快照key觸發,那么你可以改變這個key樣本的數量。
###AOF持久化
appendonly no             #如果是no,則開啟aof持久化
appendfilename “apponly.aof”      #指定aof文件名字
appendfsync everysec          #三種模式,最快 no(不調用fsync),最安全always(每次寫都會
                     #調用fsync),默認everysec(每秒鐘調用一次fsync)。
no-appendfsync-on-rewrite no      # 設置yes,可避免當寫入量非常大時的磁盤io阻塞
auto-aof-rewrite-percentage 10    #10==當aof文件增幅達到10%時則會觸發重寫機制
uto-aof-rewrite-min-size 64mb       #重寫會有一個條件,就是不能低于64Mb

###慢日志相關
slowlog-log-slower-than 10000        #慢于10000ms則記錄日志
slowlog-max-len 128          #日志長度,大于128時刪除最老的日志
### 線 上 舉 例 #####
daemonize yes
pidfile /usr/local/redis/var/redis.pid
port 6379
timeout 300
loglevel debug
logfile /usr/local/redis/var/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /usr/local/redis/var/
appendonly no
appendfsync always

 主 從 同 步 

主  master192.168.1.1
從  slave192.168.1.2

按上述方式安裝redis并啟動,master配置文件不動,slave配置文件加下行:

slaveof  192.168.1.1 6379   //主的ip和端口

masterauth  passwd      //如果主上設置了密碼,要加這一行

重啟測試:

master >> redis-cli  set key0 1  &&  redis-cli  get key0  == 輸出1

slave  >> redis-cli  get key0  == 輸出1

slave-read-only yes       # 讓從只讀
repl-ping-slave-period 10   # 設置slave向master發起ping的頻率,每10s發起一次
repl-timeout 60              # 設置slave ping不通master多少s后就超時
repl-disable-tcp-nodelay no  # 開啟后將會使用更少的帶寬,但會有延遲,建議關閉
repl-backlog-size 1mb      # 主從斷開后,主先把數據寫到緩沖區backuplog,再次連接從中讀取數據
repl-backlog-ttl 3600        # 主從斷開后,緩沖區的有效期,默認1小時
slave-priority 100          # 多個slave設置優先級,數值越小優先級越高,應用于集群中,
min-slaves-to-write 3       # 和下面的一起使用,主發現有超過3個slave的延遲高于10s,
min-slaves-max-lag 10        #那么主就會暫停寫操作。這兩個數值任何一個為0,則關閉該功能

 常 用 命 令 

string:

set key1  teng    // set賦值

set key1  teng    // 一個key對應一個value,多次賦值,會覆蓋前面的value

get key1       // get取值

setnx key2 aaa    // 返回1,get key2查看

setnx key2 bbb    // 返回0,如果存在key,返回0,不會創建

setex key3  10  1    // 這個是用來給key設定過期時間的   查看時間ttl key3

mset  key1 1  key2 2 c  3    // 同時設置多個key

mget key1 key2 c

Hash:

hset user1  name teng    //建立hash,可以存儲用戶名字性別年齡等多個信息
hset user1  age 24
hset user1  job  it
hgetall user1    //獲取所有值

hmset user2  name teng age 24  job it    //批量建立鍵值對
hmget user2    //獲取所有值
hmget user2 name age   //獲取指定值

hdel user2 job   //刪除指定filed
hkeys user2    //打印所有的key
hvals user2    //打印所有的values
hlen user2     //查看hash有幾個filed(鍵),返回數字

lists:
lpush lista  a    //從左側壓入一個元素
lpush lista b

rpush lista  1    //從右側壓入一個元素
rpush lista  2

lpop lista     //從左側取出,默認左第一個,取出之后此值就不存在了
rpop lista     //從右側取第一個元素

lrange lista  0 -1    //0 為頭 左側第一個,-1為尾 右側第一個,沒有rrange

linsert  lista  before  2 3    //在元素的值2的前面插入一個元素為3
lset lista 4 bbb    //把第5個元素修改為bbb

lindex lista 0     //查看第1個元素,,數字為索引
lindex lista 3     //查看第4個元素
llen lista      //查看鏈表中有幾個元素

set:

sadd seta aaa    //向集合seta中放入元素
smembers seta    //查看集合中的所有元素
srem seta aaa    //刪除元素
spop  seta     //隨機取出一個元素,刪除

sdiff  seta  setb    //求差集,以seta為標準

sinter seta setb    //求交集

sunion seta setb   //求并集

sdiffstore setc seta setb       //求差集,并存儲到了setc,查看 SMEMBMERS setc
sinterstore  setd seta setb    //求交集,并存儲setd ,查看 SMEMBMERS setd
sunionstore sete seta setb    //求并集,并存儲到sete

sismember seta aaa    //判斷一個元素是否屬于一個集合
srandmember  seta    //隨機取出一個元素,但不刪除

zset:

zadd zseta 11 123    //創建有序集合,大寫ZADD    等命令的可以tab補全

zrange zseta 0 -1    //顯示所有元素,按順序顯示

zrange zseta 0 -1 withscores  //可以帶上分值

zrangebyscore  zseta 1 10   // 返回分值范圍1-10的元素

zrank zseta  222    //返回元素的索引值,索引值從0開始,按score正向排序

zrevrank zseta 222    //同上,不同的是,按score反序排序

zrevrange  zseta  0 -1   //反序顯示所有元素,并帶分值

zcard zseta    //返回集合中所有元素的個數

zcount  zseta 1 10    //  返回分值范圍1-10的元素個數

zrem zseta 222    //刪除指定元素

zremrangebyrank zseta  0 2    //刪除索引范圍0-2的元素,按score正向排序

zremrangebyscore zseta  1 10    //刪除分值范圍1-10的元素

鍵值相關:

keys *      //取出所有key

keys m*      //模糊匹配

EXPIRE key1 100  //設置key1 100s后過期

del  key1    // 刪除一個key ,成功返回1 ,否則返回0;

ttl key      // 查看鍵 還有多長時間過期,單位是s,-2便是key不存在,-1沒設生存時間

select  0    //代表選擇當前數據庫,默認進入0 數據庫

exists name   //有name鍵 返回1 ,否則返回0;

move age 1     // 把age 移動到1 數據庫
persist key1   //取消key1的過期時間
randomkey    //隨機返回一個key

type key1    //返回鍵的類型

rename oldname newname //重命名key


info    //返回redis數據庫狀態信息

dbsize   //返回當前數據庫中key的數目

flushdb   //清空當前數據庫中所有的鍵
flushall  //清空所有數據庫中的所有的key
-------------------------------------------------------------------------------------------------


向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女