redis怎么用的

本文將介紹redis的基本用法。

redis怎么用的

一、redis基礎部分:?

redis適用場合

1.取最新N個數據的操作

2.排行榜應用,取TOP N 操作

3.需要精確設定過期時間的應用

4.計數器應用

5.Uniq操作,獲取某段時間所有數據排重值

6.實時系統,反垃圾系統

7.Pub/Sub構建實時消息系統

8.構建隊列系統

9.緩存

SET操作每秒鐘 110000 次,GET操作每秒鐘 81000 次,服務器配置如下:

linux 2.6, Xeon X3320 2.5Ghz.

stackoverflow 網站使用 Redis 做為緩存服務器。

同時也會將數據寫到硬盤上。所以數據是安全的(除突然斷電外,重啟服務會寫到dump.rdb文件中)

1)安裝:?

tar?zxvf?redis-2.6.9.tar.gz cd?redis-2.6.9 make cd?src?&&?make?install

2)移動配置文件位置(為了便于管理)

cd?/usr/local/ mkdir?-p?/usr/local/redis/bin mkdir?-p?/usr/local/redis/etc mv?/lamp/redis-2.6.9/redis.conf?/usr/local/redis/etc cd?/lamp/redis-2.6.9/src mv?mkreleasehdr.sh?redis-benchmark?redis-check-aof?redis-check-dump?redis-cli?redis-server?/usr/local/redis/bin

3)修改配置文件?

vi?/usr/local/redis/etc/redis.conf

將daemonize no 中no改為yes[yes指后臺運行]

4)啟動/隨機啟動:

cd?/usr/local/redis/bin ./redis-server?/usr/local/redis/etc/redis.conf#啟動redis并指定配置文件。 #vi?/etc/rc.local?#設置隨機啟動。 /usr/local/redis/bin/redis-server?/usr/local/redis/etc/redis.conf

5)查看是否啟動成功?

ps?-ef?|?grep?redis netstat?-tunpl?|?grep?6379#查看端口是否占用。

6)進入客戶端/退出?

cd?/usr/local/redis/bin ./redis-cli#進入 quit#退出

7)關閉redis??

pkill?redis-server#關閉 ./redis-cli?shutdown#關閉

Redis安全

Redis的安全性???(由以下4種方式)

1.用ACL控制器安全性。

2.在redis.conf配置文件增加下面這一行配置,即可把redis綁定在單個接口上(但并不是只有接受這個網卡的數據)。

bind 127.0.0.1

3.給redis加上較長密碼(無需要記住)

4.在redis.conf配置啟用認證功能。

5.ssl代理

6.禁用指定命令。

Redis配置

daemonize? ? 如果需要在后臺運行,把該項改為yes??pidfile? ? ? 配置多個pid的地址 默認在/var/run/redis.pidbind 綁定ip,設置后只接受來自該ip的請求port 監聽端口,默認為6379timeout? ? ? 設置客戶端連接時的超時時間,單位為秒loglevel? ? ?分為4級,debug、verbose、notice、warninglogfile? ? ? 配置log文件地址databases? ? 設置數據庫的個數,默認使用的數據庫為0save? ? ? ? ?設置redis進行數據庫鏡像的頻率rdbcompression? ? 在進行鏡像備份時,是否進行壓縮Dbfilename? ? ? ? 鏡像備份文件的文件名Dir? ?數據庫鏡像備份的文件放置路徑Slaveof? ? ?設置數據庫為其他數據庫的從數據庫Masterauth 主數據庫連接需要的密碼驗證Requirepass? ? ?設置登錄時需要使用的密碼Maxclients 限制同時連接的客戶數量Maxmemory 設置redis能夠使用的最大內存appendonly 開啟append only模式

以下了解即可:

Appendfsync 設置對appendonly.aof文件同步的頻率

vm-enabled 是否開啟虛擬內存支持

vm-swap-file 設置虛擬內存的交換文件路徑

vm-max-memory 設置redis使用的最大物理內存大小

vm-page-size 設置虛擬內存的頁大小

vm-pages 設置交換文件的總的page數量

vm-max-threads 設置VM IO同時使用的線程數量

Glueoutputbuf 把小的輸出緩存存放在一起

hash-max-zipmap-entries 設置hash的臨界值

Activerehashing 重新hash

5種數據類型:字符串、哈希、鏈表、集合、有序集合。

支持:push/pop、add/remove 、取交集、并集、差集、排序。

redismysql

同時也會將數據寫到硬盤上。所以數據是安全的(除突然斷電外,重啟服務會寫到dump.rdb文件中)

select num#選擇庫,默認在0庫,共16個庫

auth liweijie#授權用戶所需密碼(密碼就是redis.conf中配置的密碼)

flushdb#清空數據庫。

String(字符串)類型:?

set name lijie#設置鍵name的值為lijie

get name#獲取name的值。

keys *#查詢所有的鍵。

setnx name liweijie#如果鍵已存在則返回0,不更新,防止覆蓋。

setex haircolor 10 red #設置鍵的值的有效期為10秒。

setrange email 6 lampbre.com#替換鍵的值從第6個字符開始換為lampbre.com

mset name1 李大偉 name2 李小偉#設置多個鍵的值。

msetnxname1 張三 name3 李四#判斷鍵是否存在,不存在則設置,否則不設置返回0

mget name1 name2 name3#一次獲取多個鍵的值。

getset name1 Tom#重新設置鍵的值,并返回舊的鍵值。

getrange email 6 18#截取email鍵的值,從第6-18位間的字符。

incr uid#每次自增1 (如果key中uid不存在,則設置并從0開始,下同)

incrby uid 5#每次自增5?

incrby uid -5#每次自減5?

decr uid #每次自減1

decrby uid 5#每次自減5

appendname1 @126.com#給name1的值,添加字符串@126.com

strlenname1#返回鍵name1的值的長度。

Hashes(哈希)類型:?

hset user:001 name liweijie#哈希設置用戶user:001的name鍵值為liweijie

hset user:001 age 21#同樣,增加一個age鍵值為21

hsetnx user:001 age 22#同上,但檢測鍵是否存在。若不存在創建。

hmset user:002 name liweijie2 age 26 sex 1#同時設置多個鍵的值。

hget user:001 name#哈希獲取用戶user:001的name鍵的值。

hget user:001 age #同上。

hmget user:001 name age sex#獲取多個指定的鍵的值。

hgetall user:001#獲取所有鍵的值。

hincrbyuser:001 age -8#在指定鍵上加上給定的值。

hexists user:001 sex#檢測指定的鍵值是否存在。

hlen user:001#返回指定哈希的鍵個數/字段個數。

hdel user:001 sex#刪除指定(user:001)哈希的指定字段或是鍵值。

hkeys user:003#返回哈希里所有字段或是鍵值。

Lists(鏈表)類型及操作(棧或隊列):?

lpush mylist “world”#從頭部插入字符串

lpush mylist “hello”#同上

lrange mylist 0 -1#獲取從0到最后一個如[1) “hello” 2) “world”]

rpush mylist “jiejie”#在尾部插入

linsert mylist before “hello” “this is linsert” #指定插入位置(在hello之前插入)。

lset mylist 0 “what”#設置修改指定下標的值。

lrem mylist 1 “hello”#刪除(1個)一個值為hello的元素。(n

ltrim mylist 1 2 #保留表中下標為1/2的元素。

lpop mylist#彈出開頭元素并返回。

rpop mylist#彈出尾部元素并返回。

rpoplpush mylist mylist2 #從mylist尾部彈出插入到mylist2的頭部。

lindex mylist 0#獲取表下標為0的元素值。

llen mylist#返回表元素個數(相當于count($arr? ))。

sets(集合)類型及操作(好友推薦、blog、tag功能):?

smembers myset#查看myset集合中所有元素值。

sadd myset “hello”#向mysets集合中添加一個值hello

srem myset “hello”#刪除myset集合中名稱為hello的元素。

spop myset #隨機彈出并返回mysets中的一個元素。

sdiff myset2 myset3#返回myset2中的與myset3的差集(以myset2為準)。

sdiffstore myset4 myset2 myset3#返回myset2中的與myset3的差集,并存入myset4中去。

sinter myset2 myset3#返回myset2與myset3的交集。

sinterstore myset5 myset2 myset3#返回myset2與myset3的交集,并存入myset5中去。

sunion myset2 myset3#求并集(去重復)

sunionstore myset6 myset2 myset3#求并集,并存入myset6中去。

smove myset2 myset3 “three”#將myset2中的three移到myset3中去。

scard myset2#返回元素個數。

sismember myset2 “one”#判斷元素one是不是myset2集合的(相當于is_array())。

srandmember myset2#隨機返回myset2集合中的一個元素,但不刪除(相當于array_rand())。

sorted sets(有序集合)類型及操作(以scores排序):?

zadd myzset 1 “one”#向順序1的添加元素one

zadd myzset 2 “two”#同上。

zadd myzset 3 “two”#相當于更新順序為2的值

zrange myzset 0 -1 withscores#查看所有元素并帶上排序(默認升序)。

zrem myzset “two”#刪除two

zincrby myzset 2 “two”#將two的順序值加上2

zrank myzset “two”#返回集合中元素的索引下標值。

zrevrank myzset two#元素反轉并返回新下標值。

zrevrange myzset 0 -1 withscores#按順序反轉(相當于降序排序)

zrangebyscore myzset 1 10 withscores#返回順序為1-10的元素(可做分頁)。

zcount myzset 1 10 #返回順序在1-10之間元素的個數。

zcard myzset#返回集合中所有元素的個數。

zremrangebyrank myzset 1 2#刪除集合中下標為1到2的元素。

zremrangebyscore myzset 1 10#刪除集合中順序為1到10的元素。

Redis常用命令??

鍵/值相關命令。

keys * #查詢所有

keys user*#查詢指定的

exists user:001#判斷是否存在。

del name#刪除指定的鍵。

expire addr 10#設置過期時間

ttl addr#查詢過期時間

select 0 #選擇數據庫

move age 1#將age移到1數據庫。

get age #獲取

persist age#移除age的過期時間。

randomkey#隨機返回一個key

rename name1 name2#重命名鍵

type myset#返回鍵的類型。

ping #測試redis連接是否存活。

echo lamp#輸出一個lamp

select 10#選擇數據庫。

quit/exit/crtl+C#退出客戶端

dbsize#返回庫里的鍵的個數。

服務器相關命令:

info#顯示redis服務器的相關信息。

config get */loglevel #返回所有/指定的配置信息。

flushdb#刪除當前庫中的所有鍵/表。

flushall#刪除所有數據庫中的所有鍵/表

二、Redis高級部分:?

1、Redis安全性:??

1.用ACL控制器安全性。

2.給redis加上較長密碼?

# requirepass foobared?

requirepass beijing?

3.在redis.conf配置啟用認證功能。

方式一:Auth beijing

方式二:./redis-cli -a beijing

4.在redis.conf配置文件增加下面這一行配置,即可把redis綁定在單個接口上(但并不是只有接受這個網卡的數據)。

bind 127.0.0.1(單臺機器的時候可以配置,分布式或主從復制時最好不要配置)

5.SSL代理

6.禁用指定命令。

2、Redis主從復制:??

redis只需在從服務器(slave)上配置即可:

slaveof 211.122.11.11 6379 #指定master 的ip 和端口?

masterauth beijing#這是master主機的密碼?

Info#查看主/從服務器的狀態。

3、Redis事務處理:??

Redis事務很不完善。

4、Redis持久化機制:??

方式一、備份數據到磁盤(快照)[ snapshotting(快照)也是默認方式]

記錄操作命令[ Append-only file(縮寫aof)的方式]

備份數據到磁盤(快照)[ snapshotting(快照)也是默認方式]?

save?900?1?#900秒內如果超過1個key被修改,則發起快照保存 save?300?10?#300秒內容如超過10個key被修改,則發起快照保存 save?60?10000

方式二、記錄操作命令[ Append-only file(縮寫aof)的方式](較安全持久化)?

appendonly?yes?#啟用aof?持久化方式? #?appendfsync?always?//收到寫命令就立即寫入磁盤,最慢,但是保證完全的持久化? appendfsync?everysec?//每秒鐘寫入磁盤一次,在性能和持久化方面做了很好的折中

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享