20150325--Redis-02

四、sets類型及操做

set是集合,它是string類型的無序集合。set是經過hash table實現的、添加、刪除和查找的複雜度都是0(1)。對集合咱們能夠取並集、交集、差集。經過這些操做咱們能夠實現sns中的好友推薦和blog的tag功能。 php

(1)sadd mysql

向名稱爲key 的set中添加元素。 linux

語法:sadd 集合名   元素 redis

wps4C01.tmp

(2)smembers 獲取集合中內容,語法:smembers 集合名稱 sql

(3)srem 數據庫

刪除名稱爲key的set中的元素. apache

wps4C12.tmp

(4)spop 緩存

隨機返回並刪除名稱爲key的 set中一個元素。 安全

wps4C13.tmp

(5)sdiff 服務器

返回全部給定key與第一個key的差集。

wps4C23.tmp

(6)sdiffstore

返回全部給定key與第一個key的差集,並將結果存爲另外一個key。

語法:sdiffstore 新的集合  集合1   集合2

wps4C34.tmp

(7)sinter

返回全部給定key的交集.

wps4C35.tmp

(8)sinterstore

返回全部給定key的交集,並將結果存爲另外一個key

wps4C46.tmp

(9)sunion

返回全部給定key的並集

wps4C56.tmp

(10)sunionstore

返回全部給定key的並集。

wps4C67.tmp

(11)smove

從第一個key對應的set中移除member並添加到第二個對應的set中。

wps4C77.tmp

(12)scard

返回名稱爲key的set的元素個數。

wps4C88.tmp

(11)sismember

測試member是不是名稱爲 key的set的元素

wps4C89.tmp

(12)srandmember

隨機返回名稱爲key的set的一個元素,但不刪除元素

wps4C9A.tmp

五、sorted sets類型及操做

sorted set是set的一個升級版本,他在set的基礎上增長了一個順序屬性,這一屬性在添加修改元素的時候能夠指定,每次指定後,zset會自動從新按新的值調整順序。能夠理解爲有兩列的mysql表,一列存value,一列存順序。操做中的key理解爲zset的名字。

(1)zadd

向名稱爲key的zset中添加元素。若是該元素存在,則更新其順序。

語法:zadd 集合名  序號  內容

wps4CAA.tmp

(2)zrange

獲取有序集合中的內容

wps4CBB.tmp

(3)zrem

刪除名稱爲key的zset中的元素member。

wps4CCC.tmp

(4)zincrby

若是在名稱爲key的zset中已經存在元素member,則該元素的score增長increment不然向該集合中添加該元素,其score的值爲increment。

wps4CDC.tmp

(5)zrank

返回名稱爲key的zset中member元素的排名(按score從小到大排序)即下標。

wps4CDD.tmp

(6)zrevrank

返回名稱爲key的zset中member元素的排名(按score從大到小排序)即下標。

wps4CEE.tmp

(7)zrevrange

返回名稱爲key的zset(按score從大到小順序)中的index從start到end的全部元素。

wps4CFE.tmp

(8)zrangebyscore

返回集合中score在給定區間的元素

wps4D0F.tmp

(9)zcount

返回集合中score在給定區間的數量。

wps4D20.tmp

(10)zcard

返回集合中元素的個數

wps4D22.tmp

(11)zremrangebyrank

刪除集合中排名在給定區間的元素。

wps4D31.tmp

(12)zremrangebyscore

刪除集合中score在給定區間的元素。

wps4D42.tmp

六、redis經常使用命令

redis提供了豐富的命令對數據庫和各類數據庫類型進行操做,這些命令能夠在linux終端使用。

一、鍵值相關的命令

(1)keys

返回知足給定參數的全部key

用表達式*,表明取出全部的key

wps4D53.tmp

(2)exists

確認一個key是否存在。

wps4D54.tmp

(3)expire

設置一個key的過時時間

wps4D64.tmp

(4)move:

將當前數據庫中的key轉移到其它數據庫中。

wps4D75.tmp

(5)persist

移除給定key的過時時間

wps4D76.tmp

(6)randomkey

隨機返回key空間的一個key

wps4D86.tmp

(7)rename

重命名key

wps4D87.tmp

(8)type:返回值的類型

wps4D98.tmp

二、服務器相關命令

(1)select

選擇數據庫。redis數據庫編號從0-15,咱們能夠選擇任意一個數據庫來進行數據的存取。

當選擇16時,報錯,說明沒有編號爲16的這個數據庫。

wps4D99.tmp

(2)quit

退出鏈接

wps4DAA.tmp

(3)dbsize

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

wps4DAB.tmp

(4)info

獲取服務器的信息和統計。

wps4DBB.tmp

(5)config get

獲取參數的配置。

本例中咱們獲取了dir這個參數配置的值,若是想獲取所有參數的配置只須要執行」config get *」便可將所有的值都顯示出來

wps4DDC.tmp

(6)flushdb

刪除當前選擇數據庫中的全部key

wps4DDD.tmp

(7)flushall

刪除全部數據庫中的全部的 key

wps4E0C.tmp

6、安全性(設置密碼)

設置客戶端鏈接後進行任何其餘操做前須要使用的密碼。

注意:由於 redis速度至關快,因此在一臺比較好的服務器下,一個外部的用戶能夠在一秒鐘進行150k次的密碼嘗試,這意味着你須要指定很是很是強大的密碼來防止暴力破解。

方法:打開配置文件redis.conf,

語法:

requirepass 設置的密碼

requirepass guangzhou

wps4E0D.tmp

密碼驗證方式有兩種:

第一種:在客戶端登陸後,在執行某些操做時,執行auth  輸入設置密碼

wps4E1E.tmp

第二種:在客戶端登陸時,執行驗證,

redis-cli  -a  輸入設置的密碼  

wps4E1F.tmp

7、持久化的方式:

redis是一個支持持久化的內存數據庫,也就是說redis須要常常將內存中的數據同步到硬盤來保證持久化。

redis支持兩種持久化方式:

一、snapshotting(快照)默認方式

rdb的工做原理:

每隔N分鐘或N次寫操做後,

從內存dump數據造成rdb文件,

壓縮

放在備份目錄

save 900 1    #刷新快照到硬盤中,必須知足二者要求才會觸發,即900秒以後至少1個關鍵字發生變化。

save 300 10  #必須是300秒以後至少10個鍵的值發生變化。

save 60 10000 #必須是60秒以後至少10000個鍵的值發生變化。

(以上3個選項都屏蔽,則rdb禁用)

stop-writes-on-bgsave-error yes    #後臺存儲錯誤中止寫。

rdbcompression yes    #使用LZF壓縮rdb文件。

rdbchecksum yes    #存儲和加載rdb文件時校驗。

dbfilename dump.rdb    #設置rdb文件名。

dir ./    #設置工做目錄,rdb文件會寫入該目錄。

二、append-only file( 縮寫aof)的方式

aof方式

固然因爲os會在內核中緩存write作的修改,因此可能不是當即寫到磁盤上。這樣aof方式的持久化也仍是有可能會丟失部分修改。

能夠經過配置文件告訴reids咱們想要經過fsync函數強制os寫入到磁盤的時機。

appendonly  yes //啓用 aof 持久化方式

appendfilename appendonly.aof   //保存命令的文件名稱

# appendfsync always   //每次收到寫命令就當即強制寫入磁盤,最慢的,可是保證徹底的持久化,不推薦使用

appendfsync everysec   //每秒鐘強制寫入磁盤一次,在性能和持久化方面作了很好的折中,推薦

# appendfsync no   //徹底依賴 os,性能最好,持久化沒保證

no-appendfsync-on-rewrite no #重寫aof時同步最新數據

aof重寫:內存中的數據,逆化成命令,寫入到.aof日誌裏面。以解決aof日誌過大過程當中。

auto-AOF-rewrite-percentage 100 當前aof文件是上次重寫是增長N%時重寫

auto-AOF-rewrite-min-size  64mb aof重寫至少要達到的大小

64M   =è50M         100M      =è80M(重寫後)      

第一次從新完成: 第二次重到100M         第三次重寫160M

手動完成重寫:bgrewriteaof

wps4E30.tmp

注意點:

兩種備份方式能夠同時使用,並且推薦這麼作。

恢復時,rdb和aof哪一個恢復的塊。

rdb快,由於rdb數據是內存的映射,直接載入到內存,而aof是命令,須要逐條執行。

8、php支持redis

一、準備擴展文件。擴展文件要和php的版本一致,具體是vc幾的,是不是ts的或nts的。

wps4E50.tmp

二、把擴展拷貝到php的安裝目錄下面的ext目錄下面。

三、打開php.ini文件,配置加載擴展,(重啓apache)

四、經過phpinfo函數進行測試。

wps4E51.tmp

入門案例使用:

wps4E71.tmp

9、案例:

用戶註冊     用戶登陸   用戶的刪除和修改  分頁顯示用戶   添加用戶的好友

register.php用戶註冊頁面,

思考:如何來存儲用戶的具體信息,使用哈希,構造一個用戶鍵

user:id

index.php 首頁面,用於顯示用戶列表頁面。

del.php 用於刪除用戶,要注意刪除  哈希鍵  ,還要刪除鏈表裏面用戶的id

login.php:用戶登陸的頁面,

loginok.php處理用戶登陸的頁面:

接收到$username  和 $password  如何驗證用戶合法呢?

用戶的數據是存儲到哈希裏面,哈希的鍵user:id

思路:根據用戶輸入的用戶名,獲取到用戶的id,根據id從哈希裏面獲取用戶的密碼,該密碼再和用戶輸入的密碼進行比較。

在用戶註冊時,經過設置一個字符串,該字符串用於存儲用戶的id.

字符串的鍵:如何設計:’username:’.$username,$userid

addfield.php  添加好友頁面,

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息