天天看點

redis常用操作,redis操作鍵值,redis安全設定

之前已經介紹過redis裡各種資料類型的指派操作,在這裡則介紹一下各個資料類型的其他常用的操作。

string類型的操作:

使用set指令對已存在的鍵/值進行指派的話,會覆寫原有的值:

使用setnx指令則可以在指派時檢測目标鍵值是否已存在,如果存在會傳回0,不會覆寫原有的鍵值。不存在則傳回1并建立該鍵值:

set指令中的ex參數可以給某個鍵值設定過期時間:

setex指令則是先設定過期時間然後再設定值:

<br>

list類型的操作:

lpush指令可以從左邊添加元素,或者可以了解為從上面添加元素。清單中的元素可以了解為左右關系也可以了解為上下關系,主要看個人習慣:

lpop指令則是可以從左邊拿取元素:

linsert指令用于指定在某個元素的前、後位置插入元素,例如:

lset指令用來修改某一個指定的元素:

lindex指令檢視某個下标的元素:

llen指令檢視某個清單中的元素數量:

set類型的操作:

sadd seta aaa //向集合seta中放入元素

smembers seta //檢視集合中的所有元素

srem seta aaa //删除元素 

spop seta //随機取出一個元素,删除

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

sdiffstore setc seta setb //求seta和setb的差集并且将結果存儲,存儲到了setc裡

sinter seta setb //求交集

sinterstore setd seta setb //将交集存儲setd

sunion seta setb //求并集

sunionstore sete seta setb //求并集并存儲到sete

sismember指令可以判斷一個元素是否屬于一個集合,有則傳回1,沒有則傳回0:

srandmember指令可以随機取出一個元素,但不删除:

zset類型的操作:

zadd zseta 11 123 //建立有序集合

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

zrange zseta 0 -1 withscores //可以帶上分值,也就是添加元素時給的數字

zrem zseta 222 //删除指定元素

zrank zseta 222 //傳回元素的索引值也就是下标,索引值從0開始,按score正向排序

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

zrevrange zseta 0 -1 反序顯示所有元素

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

zcount zseta 1 10 // 傳回分值範圍1-10的元素個數

zrangebyscore zseta 1 10 // 傳回分值範圍1-10的元素

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

zremrangebyscore zseta 1 10 //删除分值範圍1-10的元素

hash類型的操作:

//單個建立hash鍵值

hset user1 name aming 

hset user1 age 30 

hset user1 job it

//批量建立鍵值對

hmset user2 name aming age 30 job it

// 批量獲得鍵值對

hmget user2 name age job

//得到所有的鍵值對

hgetall user1

//删除指定filed

hdel user2 job

//列印所有的key

hkeys user2

//列印所有的values

hvals user2

//檢視hash有幾個filed 

hlen user2

keys *可以列印目前redis存儲的鍵:

keys支援模糊比對:

exists指令可以判斷某個鍵是否存在,存在傳回1 ,否則傳回0:

del指令可以删除一個key ,删除成功傳回1 ,否則傳回0:

EXPIRE指令可以給指定的鍵設定一個過期時間:

ttl 指令可以檢視指定的鍵還有多長時間過期,機關是秒,當 key 不存在時,傳回 -2 。 當 key 存在但沒有設定剩餘生存時間時,傳回 -1 。 否則,傳回 key 的剩餘生存時間。

select指令可以選擇一個資料庫,redis預設有6個資料庫,通過0-6的數字就可以選擇進入哪一個庫:

move set1 1 // 把set1移動到 1 資料庫裡:

persist key1 //取消key1的過期時間

randomkey //随機傳回一個key

rename oldname newname //重命名key

type key1 //傳回鍵的類型

dbsize指令可以傳回目前資料庫中key的數目

info //傳回redis資料庫狀态資訊

flushdb //清空目前資料庫中所有的鍵:

flushall //清空所有資料庫中的所有的key

bgsave //儲存資料到 rdb檔案中,會在背景運作:

save //作用同上,但是在前台運作

config get * //擷取所有配置參數,奇數行是鍵,偶數行是值:

config get dir //通過鍵擷取某個配置參數

config set dir //更改配置參數

資料恢複: 首先定義或者确定dir目錄和dbfilename,然後把備份的rdb檔案放到dir目錄下面,重新開機redis服務即可恢複資料。

redis預設會監聽所有ip,這樣的話所有ip都能來進行連接配接,是以需要設定指定的監聽ip來提高安全性。

redis預設端口是6379,如果使用預設端口很容易被黑客掃到,是以設定一個其他的監聽端口也可以提高安全性。

redis預設是沒有密碼的,是以還需要設定密碼:

修改完之後重新開機redis服務:

killall redis-server redis-server /etc/redis.conf

這時候雖然可以還進入redis指令行,但是不能夠執行指令了:

需要通過 -a 選項指定密碼登入:

因為config指令可以獲得所有的配置參數,是以有一定的風險,但是我們可以将config指令改名,同樣的需要編輯配置檔案:

再次進入指令行可以發現原本的config指令不能用了:

如果不需要使用config指令的話,可以在配置檔案中添加這一行禁用config指令:

rename-command CONFIG ""

本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/2056738,如需轉載請自行聯系原作者