摘要:語法命令基本語法實例數據類型支持五種數據類型字符串,哈希,列表,集合及有序集合。資源修改文件增加如下內容如果在集成環境的目錄下安裝完成后重啟或。
Redis 簡介
Redis 是完全開源免費的,遵守BSD協議,是一個高性能的key-value數據庫。
Redis 與其他 key - value 緩存產品有以下三個特點:
Redis支持數據的持久化,可以將內存中的數據保持在磁盤中,重啟的時候可以再次加載進行使用。
Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
Redis支持數據的備份,即master-slave模式的數據備份。
Redis 優勢性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
豐富的數據類型 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操作。
原子 – Redis的所有操作都是原子性的,同時Redis還支持對幾個操作全并后的原子性執行。
豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性。
Redis與其他key-value存儲有什么不同?Redis有著更為復雜的數據結構并且提供對他們的原子性操作,這是一個不同于其他數據庫的進化路徑。Redis的數據類型都是基于基本數據結構的同時對程序員透明,無需進行額外的抽象。
Redis運行在內存中但是可以持久化到磁盤,所以在對不同數據集進行高速讀寫時需要權衡內存,應為數據量不能大于硬件內存。在內存數據庫方面的另一個優點是, 相比在磁盤上相同的復雜的數據結構,在內存中操作起來非常簡單,這樣Redis可以做很多內部復雜性很強的事情。 同時,在磁盤格式方面他們是緊湊的以追加的方式產生的,因為他們并不需要進行隨機訪問。
安裝Redis1.在MacOSX下,用curl命令先下載redis:
$ curl -O http://download.redis.io/releases/redis-2.8.17.tar.gz
如果是Linux系統,可用wget命令下載:
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
2.解壓并安裝
$ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make
make完后 redis-2.8.17目錄下會出現編譯后的redis服務程序redis-server,還有用于測試的客戶端程序redis-cli,兩個程序位于安裝目錄 src 目錄下:
3.啟動redis服務
$ cd src $ ./redis-server
如果看到下面的圖,表示redis安裝成功了^_^
注意上面的方式啟動redis 使用的是默認配置。也可以通過啟動參數告訴redis使用指定配置文件使用下面命令啟動。
$ cd src $ ./redis-server redis.conf
redis.conf是一個默認的配置文件。我們可以根據需要使用自己的配置文件。
啟動redis服務進程后,就可以使用測試客戶端程序redis-cli和redis服務交互了, 比如:
$ cd src $ ./redis-cli redis> set foo bar OK redis> get foo "bar"
這里可以開一個新的命令行窗口,我的redis保存路徑:
Mac:cd /Users/mac/software/redis/redis-2.8.17 Mac:redis-2.8.17 mac$ cd src Mac:src mac$ ./redis-cli
說明:
127.0.0.1 是本機 IP ,6379 是 redis 服務端口。現在我們輸入 PING 命令。
127.0.0.1:6379> ping PONG
測試:
Redis 的配置文件位于 Redis 安裝目錄下,文件名為 redis.conf。
你可以通過 CONFIG 命令查看或設置配置項。
Redis CONFIG 命令格式如下:
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
實例
redis 127.0.0.1:6379> CONFIG GET loglevel 1) "loglevel" 2) "notice"
使用 * 號獲取所有配置項:
你可以通過修改 redis.conf 文件或使用 CONFIG set 命令來修改配置。
語法
CONFIG SET 命令基本語法:
redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
實例
redis 127.0.0.1:6379> CONFIG SET loglevel "notice" OK redis 127.0.0.1:6379> CONFIG GET loglevel 1) "loglevel" 2) "notice"Redis 數據類型
String(字符串)Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。
string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。
string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。
示例:
redis 127.0.0.1:6379> SET name "JackChan" OK redis 127.0.0.1:6379> GET name "JackChan"
在以上實例中我們使用了 Redis 的 SET 和 GET 命令。鍵為 name,對應的值為JackChan。
注意:一個鍵最大能存儲512MB。
Redis hash 是一個鍵值對集合。
Redis hash是一個string類型的field和value的映射表,hash特別適合用于存儲對象。
示例:
127.0.0.1:6379> HMSET user_id:1 name jackcheng age 25 address HongKong OK 127.0.0.1:6379> HGETALL user_id:1 1) "name" 2) "jackcheng" 3) "age" 4) "25" 5) "address" 6) "HongKong" 127.0.0.1:6379>
以上實例中 hash 數據類型存儲了包含用戶腳本信息的用戶對象。 實例中我們使用了 Redis HMSET, HGETALL 命令,user_id:1為鍵值。
每個 hash 可以存儲 232 - 1 鍵值對(40多億)。
Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素導列表的頭部(左邊)或者尾部(右邊)。
示例:
127.0.0.1:6379> lpush language php (integer) 1 127.0.0.1:6379> lpush language c (integer) 2 127.0.0.1:6379> lpush language java (integer) 3 127.0.0.1:6379> lpush language python (integer) 4 127.0.0.1:6379> lrange language 0 5 1) "python" 2) "java" 3) "c" 4) "php" 127.0.0.1:6379>
l ->list 列表 push 推入隊列
列表最多可存儲 232 - 1 元素 (4294967295, 每個列表可存儲40多億)。
Redis的Set是string類型的無序集合。
集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是O(1)。
sadd 命令
添加一個string元素到,key對應的set集合中,成功返回1,如果元素以及在集合中返回0,key對應的set不存在返回錯誤。
sadd key member
示例:
127.0.0.1:6379> sadd pragmmer c++ (integer) 1 127.0.0.1:6379> sadd pragmmer oc (integer) 1 127.0.0.1:6379> sadd pragmmer oc (integer) 0 127.0.0.1:6379> smembers pragmmer 1) "c++" 2) "oc" 127.0.0.1:6379>
注意:以上實例中 oc 添加了兩次,但根據集合內元素的唯一性,第二次插入的元素將被忽略。
集合中最大的成員數為 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。
Redis zset 和 set 一樣也是string類型元素的集合,且不允許重復的成員。
不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
zset的成員是唯一的,但分數(score)卻可以重復。
zadd 命令
添加元素到集合,元素在集合中存在則更新對應score
zadd key score member
示例:
127.0.0.1:6379> zadd mytest 9 laravel (integer) 1 127.0.0.1:6379> zadd mytest 1 php (integer) 1 127.0.0.1:6379> zadd mytest 3 ios (integer) 1 127.0.0.1:6379> zadd mytest 2 php (integer) 0 127.0.0.1:6379> ZRANGEBYSCORE mytest 0 10 1) "php" 2) "ios" 3) "laravel" 127.0.0.1:6379>Redis 性能測試
Redis 性能測試是通過同時執行多個命令實現的。
語法
redis 性能測試的基本命令如下:
redis-benchmark [option] [option value]
實例:
redis-benchmark在安裝目錄src里邊,下面我們同時執行 10000 個請求來檢測性能:
MacdeMacBook-Pro-3:src mac$ ./redis-benchmark -n 10000 ====== PING_INLINE ====== 10000 requests completed in 0.25 seconds 50 parallel clients 3 bytes payload keep alive: 1 48.44% <= 1 milliseconds 98.32% <= 2 milliseconds 99.51% <= 6 milliseconds 100.00% <= 6 milliseconds 39215.69 requests per second ... ... ====== MSET (10 keys) ====== 10000 requests completed in 0.38 seconds 50 parallel clients 3 bytes payload keep alive: 1
redis 性能測試工具可選參數如下所示:
帶有參數的示例:
MacdeMacBook-Pro-3:src mac$ ./redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q SET: 29904.30 requests per second LPUSH: 25094.10 requests per second MacdeMacBook-Pro-3:src mac$
以上實例中主機為 127.0.0.1,端口號為 6379,執行的命令為 set,lpush,請求數為 100000,通過 -q 參數讓結果只顯示每秒執行的請求數。
開始在 PHP 中使用 Redis 前, 我們需要確保已經安裝了 redis 服務及 PHP redis 驅動,且你的機器上能正常使用 PHP。接下來讓我們安裝 PHP redis 驅動:下載地址為:https://github.com/phpredis/phpredis/releases。
PHP安裝redis擴展
以下操作需要在下載的 phpredis 目錄中完成:
$ curl -O https://github.com/phpredis/phpredis/archive/2.2.4.tar.gz $ cd phpredis-2.2.7 # 進入 phpredis 目錄 $ /usr/local/php/bin/phpize # php安裝后的路徑 $ ./configure --with-php-config=/usr/local/php/bin/php-config $ make && make install
phpredis資源
https://github.com/michael-grunder/phpredis.git
注意:這里如果是使用的XAMPP安裝的服務器,則通過查看phpinfo的PHP版本是否一致,如果不一致,則說明當前的路徑為Mac系統自帶的PHP版本。
查看PHP版本:
php -v
打印出來的是Mac系統自帶的PHP路徑,而我們需要XAMPP安裝的PHP,則需要在/Applications/XAMPP/xamppfiles/bin路徑下找到PHPize安裝的路徑。
XAMPP的PHP版本為5.6.14:
查看當前所在目錄命令 pwd
Linux中用 pwd 命令來查看”當前工作目錄“的完整路徑。pwd命令是Print Working Directory的縮寫。 簡單得說,每當你在終端進行操作時,你都會有一個當前工作目錄。
MacdeMacBook-Pro-3:bin mac$ pwd /Applications/XAMPP/xamppfiles/bin
XAMPP的PHP安裝的phpsize就在該路徑下:
/Applications/XAMPP/xamppfiles/bin/phpize
acdeMacBook-Pro-3:phpredis mac$ ./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config
MacdeMacBook-Pro-3:phpredis-3.0.0 mac$ sudo make && make install
出現了這樣的的錯誤:
如果出現這樣的錯誤,則說明phpredis擴展包有問題,換一個擴展包,再重試下之前的步驟,即可安裝成功。
phpredis資源
https://github.com/michael-grunder/phpredis.git
Installing shared extensions: /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226/ MacdeMacBook-Pro-3:phpredis mac$修改php.ini文件
vi /usr/local/php/lib/php.ini
增加如下內容:
extension=redis.so
如果在XAMPP集成環境的目錄下:
extension_dir = "/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226/" extension=redis.so
安裝完成后重啟php-fpm 或 apache。查看phpinfo信息,就能看到redis擴展。
開啟redis服務MacdeMacBook-Pro-3:phpredis mac$ cd /Users/mac/software/redis/redis-2.8.17/src MacdeMacBook-Pro-3:src mac$ ./redis-serverphp連接到 redis 服務
connect("127.0.0.1", 6379); echo "Connection to server sucessfully"; //查看服務是否運行 echo "Server is running: " . $redis->ping(); ?>
執行腳本,輸出結果為:
Connection to server sucessfully Server is running: PONG
Redis PHP String(字符串) 實例
connect("127.0.0.1", 6379); echo "Connection to server sucessfully"; //設置 redis 字符串數據 $redis->set("tutorial-name", "Redis tutorial"); // 獲取存儲的數據并輸出 echo "Stored string in redis:: " . $redis->get("tutorial-name"); ?>
執行腳本,輸出結果為:
Connection to server sucessfully Stored string in redis:: Redis tutorial
參考博文:
Redis快速學習
【高并發簡單解決方案】redis隊列緩存 + mysql 批量入庫 + php離線整合
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/21728.html
摘要:說明本文主要學習下的模型觀察者,把一點點經驗分享出來希望對別人能有幫助。模型觀察者這個功能能做很多事情,比如模型更新時發個通知。總結本篇文章主要學了下的模型觀察者,發現這個功能也能使代碼結構更清晰,覺得挺好的。 說明:本文主要學習下Laravel的Model Observer模型觀察者,把一點點經驗分享出來希望對別人能有幫助。同時,作者會將開發過程中的一些截圖和代碼黏上去,提高閱讀效率...
摘要:說明本文主要講述使用作為緩存加快頁面訪問速度。何不用來做緩存,等到該達到一定瀏覽頁面后再刷新下,效率也很高。可作緩存系統隊列系統。 說明:本文主要講述使用Redis作為緩存加快頁面訪問速度。同時,作者會將開發過程中的一些截圖和代碼黏上去,提高閱讀效率。 備注:作者最近在學習github上別人的源碼時,發現好多在計算一篇博客頁面訪問量view_count時都是這么做的:利用Laravel...
閱讀 1702·2021-11-24 09:39
閱讀 3168·2021-11-22 15:24
閱讀 3106·2021-10-26 09:51
閱讀 3296·2021-10-19 11:46
閱讀 2907·2019-08-30 15:44
閱讀 2229·2019-08-29 15:30
閱讀 2549·2019-08-29 15:05
閱讀 791·2019-08-29 10:55