Redis小结
Redis
簡介
1.一個通過 內存 存取數據的key-value數據庫
2.常用的是它的鏈表與集合的數據結構
3.當然除了redis,我們平時的應用離不開它與Mysql的結合,
先存入mysql再存入redis主要功能
用來提速,因為內存讀取比硬盤讀取 速度要快很多
字符串 string
特點:簡潔,常用于存用戶信息
常用操作方法
key-value數據庫設計
常用方式,類比Mysql數據庫設計,表名>字段名>字段值
示例一:user表,里面的字段有username,uid,password 帶有$表示php中的變量 先定一個自增變量 $uid=$r->incr("uid"); Key Value 備注 user:uid:$uid:username $username 根據用戶uid查名字 user:uid:$uid:password $password 根據用戶uid查密碼 user:$username $uid 根據用戶名查密碼場景:已知用戶名$username,密碼$password,查帳號密碼是否正確 步驟一, $uid=$r->get("user:$username"); 步驟二:其中*表示匹配任意多個字符 $find_key = $r->keys("user:uid:$uid*"); if(empty($find_key)){echo "帳號或者密碼錯誤";//帳號不存在 }else{ $nameMix="user:".$uid.":username"; $pwdMix= "user:".$uid.":pwd" ; $get_user_info=array($nameMix,$pwdMix ); $find=$r->mget($get_user_info); if($name == $find[0] && $pwd == $find[1]){echo "歡迎您,$username!"; }else{echo "帳號或者密碼錯誤"; }鏈表 list
特點:常用來做消息推送
這里的消息推送是指,判斷是否發送成功,系統成功接收到消息,就返回確認信息給發送端 然后就把推送的過程留給服務器,在后臺進行。[推送可以用到優先級,關注越早(可以通過zsort實現),越優先]常用隊列解決優先級的問題,例如
lpush可以形成一個從左往右的隊列 rpush可以使得一個新的數據插入隊列的頂部,用于解決進程優先級的問題注意:隊列一般不給予定點刪除功能,比如新浪微博,你取消關注后,它依然
集合 set
特點:交集、并集、差集、不重復,可以通過sort排序
1)粉絲粉主關系 2)防止事件重復哈希 hash
特點:類似于二維數組的存取
排序集 zset
特點:排序方便,如果熟練set方法的排序,這個就不用研究了
常用操作
目前我做了一個小案列關于具體操作的,微博邏輯大概就是這個樣子
鏈接:http://pan.baidu.com/s/1slMSrqH 密碼:9u5b
更新時間 2016年8月2日 23:48:06
這里講php中常用方法
初始的時候定義靜態變量 $r $r = new Redis(); $r->connect("127.0.0.1",“6379”); //如果有密碼 //$r->auth("密碼"); $r->select(1);如果是查詢的string型,模糊查找user:uid:uid的數據,查找user:uid:uid:age的各自年齡
$find_array=$r->keys("user:uid:*"); $count=count($find_array);//找到到的個數 for($i=0 ; $i < $count ; $i++){$keyMix[$i]="user:uid:$find_array[$i]:age"; } $result_array=$r->mget($find_array); print_r($result_array);其他類型的常用嘗試
Redis的AOF
進入redis的安裝后的配置文件redis.conf
vim /usr/local/redis/etc/redis.conf0)設置AOF類型,這里設置精準持久化(每次數據變更都會自動備份,當數據量大的時候換類型)
appendfsync everysec1)你應該會看到
save 900 1 save 300 10 save 60 10000比如,第一行,表示900秒內,如果超過1個key被修改,就發起快照保存
后兩行同理,這三行表示三種方案,不同情況不同處理
2)你應該會看到
備份的數據名稱
dbfilename dump.rdb備份數據的路徑
dir /usr/local/redis/var3)如果你是在本地輸入的數據,想將dump.rdb文件弄到服務器上
此間要求:本地的redis版本,不能高于服務器版本的redis,否則dump.rdb不能被讀取
主從配置
為了防止意外發生,請各個服務器統一redis版本!!!
1) 開放服務器對應的redis端口
iptables -A INPUT -p tcp --dport 6379 -j ACCEPT service iptables save2) 進入redis的安裝后的配置文件redis.conf
vim /usr/local/redis/etc/redis.conf3) 找到# requirepass foobared這行下面添加密碼,比如設為hlz
# requirepass foobared# 配置該服務器密碼requirepass hlz4) 配置主服務器(master)
主服務器(115.159.56.128:6379)
配置步驟3)中的密碼
設置slave權限:一般情況=>從服務器=>只讀,不可寫
slave-read-only yes
從服務器
在redis.conf中,找到
# slaveof <masterip> <masterport> # 示例如下,填寫對應的主服務器的ip與端口 slaveof 115.159.56.128 6379# masterauth
# 輸入主服務器的密碼
masterauth hlz
現在就完成主從配置了。
關于主從配置的分布式使用,我們可以用一致哈希算法
http://blog.csdn.net/cywosp/article/details/23397179/
待更新
解決跨域請求
待有空時,再更新
后續:建議相關
我建議在windows下,因為編譯器更強大,
Windows下安裝redis環境講解 http://blog.csdn.net/myboyli/article/details/52082050 Linux下安裝redis環境講解待更新 php操作redis的函數總結 http://blog.csdn.net/myboyli/article/details/52090452總結
- 上一篇: [全]php-redis函数使用
- 下一篇: Redis与Memcache的对比