1.學習Redis之前呢,首先需要安裝redis。 這裡使用的環境:VMware12,CentOS7 安裝對象:redis4.0.2 1.1 訪問redis.io網站查詢目前最新的redis發佈包,並copy資源地址(http://download.redis.io/releases/redis-4 ...
1.學習Redis之前呢,首先需要安裝redis。
這裡使用的環境:VMware12,CentOS7
安裝對象:redis4.0.2
1.1 訪問redis.io網站查詢目前最新的redis發佈包,並copy資源地址(http://download.redis.io/releases/redis-4.0.2.tar.gz)。
1.2開始安裝流程
1.2.1 centos上切換到root用戶。
1.2.2 創建redis的下載目錄:"cd /home/",”mkdir downloads"。然後跳轉進來"cd downloads/"
1.2.3 下載資源:"wget http://download.redis.io/releases/redis-4.0.2.tar.gz"
1.2.4 解壓資源:"tar -zxvf http://download.redis.io/releases/redis-4.0.2.tar.gz",解壓後會發現多出了redis-4.0.2目錄。
跳轉進來"cd redis-4.0.2/",繼續跳轉進入src目錄"cd src/"
1.2.5 編譯"make"。等待編譯結束。通過"ls"命令,發現生成編譯後的可執行文件,顏色為墨綠色。
1.2.6 安裝"make install"
1.2.7 把必要文件copy到常用的目錄下(事先創建 mkdir -p /usr/lcoal/redis/etc/ ; mkdir -p /usr/local/redis/bin/)。
copy redis.conf文件:"cp /home/downloads/redis-4.0.2/redis.conf /usr/local/redis/etc/"
copy 當前目錄下執行文件:"cp redis-check-aof redis-cli redis-server redis-benchmark redis-check-rdb redis-sentinel redis-trib.rb
/usr/local/redis/bin/ "
1.2.8 編輯redis.conf文件:"vim /usr/local/redis/etc/redis.conf"
設置redis的登錄密碼,增加如下內容(本例設置為password):"requirepass password"
設置為後臺啟動,修改daemonize參數:"daemonize yes"
1.3啟動redis-server並通過客戶端redis-cli登錄。
1.3.1啟動redis-server
跳轉到執行命令文件目錄:"cd /usr/local/redis/bin/"
執行啟動命令(配置文件設置為啟動參數):"./redis-server ../etc/redis.conf"
確認進程存在:"pstree -p | grep redis"
確認預設埠(redis預設埠6379):"netstat -tunpl | grep 6379"
1.3.2通過客戶端redis-cli登錄
執行客戶端命令,附帶登錄密碼:"./redis-cli -a password"
到這裡,安裝,伺服器啟動和客戶端登錄都已經完成。
2.redis是什麼,有什麼作用。
官方說明:redis是開源的使用ANSI C編寫,支持網路,可基於亦記憶體亦持久化的日誌型,key-value資料庫。並支持多語言API。
自己總結:開源,支持單線程寫操作,日常操作時在緩存中處理,數據訪問和操作很快,並基於持久化規則進行持久化。
和關係型資料庫協作工作時,定位於資料庫的緩存層,降低對mysql等DB伺服器的訪問壓力。
也有項目直接把redis作為最終的持久化資料庫使用。redis本身支持多種對象存儲類型,使用起來靈活方便。並支持master-slave備份以及搭建集群。
使用時需要考慮項目特點,分析出熱點數據進行redis緩存,不要濫用redids緩存。
3.redis支持的數據類型有String,Hash,List,Set,Zset(SortedSet)。
各類型的常用命令:string: set/get,mset/mget,
hash: hset/hget,hmset/hmget,hgetall,
list: lpush/lpop,rpush/rpop,lrange,lindex,llen,ltrim,blpop/brpop,rpoplpush,bpoplpush,
set: sadd,smembers,sismember,srem,scard,
zset: zadd,zrange,zrangebyscore,zscore,zrangebylex,zremrangebyscore,
zrevrange,zinter,zinterstore,zunion,zunionstore,zdiff,zdiffsotre
其他命令:
phadd,pfcount,
setbit,getbit,bitcount,bitop
keys,type,randomkey等常用命令。
4.在redis上把下麵命令全部執行一遍,認識會比較直觀,光看命令與結果的說明,印象不深刻。
所以這裡不列舉各個命令執行的結果。
關於set的交集、並集、差集的處理也比較有意思,可以多嘗試理解。
另外,bit操作的部分也需要花費一些時間進行深入理解,需要認清bit的每一位就是一個id,其中0和1代表該id的兩個狀態。
比如:id為0,1,2,3,4,5,6的七位用戶,今天登陸了app,那麼就可以在bit里記述為11111110,其中每個位元組8位,第8位沒有用時預設為0.
當需要記錄的id比較多時,redis會不斷擴大記憶體,每多一個位元組(8bits),就可以多放8個id的信息。
對多個存放bit數據的key,可以進行bitop操作,有 and與、or或、xor異或、以及not取反的選項處理。
#String
set key value
get key
mset key1 value1 key2 value2
mget key1 key2
set key value ex 10
expire key 10
keys *
del key
del key1 key2
set key 1
incr key
incrby key 10
#List(linked list)
lpush mylist 1 2 3 4 5
lpop mylist
rpush mylist 6 7 8 9 10
rpop mylist
lrange mylist 0 -1
ltrim mylist 0 -2
lpush mylist 1 1 1 1 1
lrem mylist 3 1
llen mylist
blpop mylist 10
brpop mylist 10
blpop nolist 10
brpop nolist 10
rpoplpush mylist nolist
rpop nolist
brpoplpush nolist mylist 10
#Hash
hset myhash f1 1
hget myhash f1
hmset myhash f1 1 f2 2 f3 3 f4 4 f5 5
hmget myhash f1 f2 f3 f4 f5
hgetall myhash
hdel myhash f4 f5
hgetall myhash
hincrby myhash f1 10
#Set
sadd jp wang li sun wu
sadd en wang li zhang zhao
sadd fr wang li fang xu
smembers jp
sismember jp wang
sinter jp en fr
sinterstore intersectionOfJpEnFr jp en fr
smembers intersecionOfJpEnFr
sunion jp en fr
sunionstore unionOfJpEnFr jp en fr
smembers unionOfJpEnFr
sdiff jp en fr
sdiffstore diffenceOfJpToEnFr jp en fr
smembers diffenceOfJpToEnFr
smove jp sun
smembers jp
sadd testset 1 2 3 4 5 6
srem testset 5 6
smembers testset
spop testset 2
smembers testset
del testset
sadd testset 1 2 3 4
srandmember testset 2
smembers testset
#ZSET
zadd zset1 10 wang 20 li 30 sun 40 xu 90 michael 100 sofia
zrange zset1 0 -1
zrangebyscore zset1 50 100
zscore zset1 michael
zadd zset2 0 a 0 apple 0 b 0 banana 0 w 0 watermallon
zrangebylex zset2 [a [b
zremrangebylex zset2 [a [b
zremrangebyscore zset2 0 100
zrange zset2 0 -1
#pf
pfadd key 1 2 3 4 1 2 5
pfcount key
#bit
#10/19 uid(from 1 to 15) login this websit
setbit stat1019 1 1
#(repeat excute setbit)
setbit stat1019 15 1
#10/20 uid(1,2,3,4,5,7,9) login this websit
setbit stat1020 1 1
#repeat
setbit stat1020 9 1
#10/21 uid(1,2,3,4,5,6,8,10) login this websit
setbit stat1021 1 1
#repeat
setbit stat1021 10 1
bitcount stat1019
bitcount stat1020
bitcount stat1021
#bitop and
bitop and statand stat1019 stat1020 stat1021
bitcount statand
gitbit statand 1
gitbit statand 15
#bitop or
bitop or stator stat1019 stat1020 stat1021
bitcount stator
gitbit stator 1
gitbit stator 15
#bitop not
#each byte has 8bits,for example setbit key 6 1,key will be 00000010
#not:it will be 11111101
bitop not statnot stat1019
bitcount statnot
bitget statnot 0
bitget statnot 1
bitget statnot 15
#bitop xor
#xor:for example xor A("00001111") B("11110011") C("00110011")
#firstly xor A and B => A1("11111100")
#secondly xor A1 and C =>A2("11001111")
bitop xor statxor stat1019 stat1020 stat1021
bitcount statxor
getbit statxor 1
getbit statxor 15
5.上述常用命令在實際操作後,進一步的學習,推薦先看redis.conf的各個參數的配置(英文1200行左右)。通過參數的說明,可以瞭解redis支持的各個方面機能。
比如:記憶體大小和清理策略,設置可訪問網路主機,安全設置,主從複製,集群設置,Aof-Rewrite機制,高級配置中關於高效hash list set zset等的設置。
下麵是各個模塊的重要設置信息: