redis
Redis是Remote Dictionary Server(遠程數據服務)的縮寫,由意大利人antirez(Salvatore Sanfilippo)開發的一款內存高速緩存數據庫,該軟件使用C語言編寫,它的數據模型為key-value。
操作都是原子性的(要麽執行成功,要麽不執行)
(1)redis和memcache比較
1.Redis不僅僅支持簡單的k/v類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
2.Redis支持master-slave(主-從)模式應用
3.與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。
4.Redis單個value的最大限制是1GB,memcached只能保存1MB的數據。
memcached,對於緩存對象大小有要求,單個對象不得大於1MB,且不支持復雜的數據類型,譬如SET等。
操作命令
get
set
info查看性能
redis有五種數據類型,string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)
#安裝
yum install -y redis
#源碼
cd /usr/local/src/
wget sha1sum hash redis-3.2.0.tar.gz sha1 0c1820931094369c8cc19fc1be62f598bc5961ca http://download.redis.io/releases/redis-3.2.0.tar.gz
#完整性:與 redis-hashes 對照
tar zxvf redis-3.2.0.tar.gz
cd redis-3.2.0
yum install -y epel-release
#啟動
systemctl start redis.service
systemctl stop redis.service
systemctl status redis.service
systemctl restart redis.service
#隨系統啟動服務
systemctl enable redis.service
查看狀態 :
# ss -nlp|grep redis
或者
# ps -ef | grep redis
#使用redis
redis-cli
redis-cli -h 127.0.0.1 -p 6379
redis-cli -h 127.0.0.1 -p 6379 -a password
6、Redis開啟遠程登錄連接
原來是redis默認只能localhost登錄,所以需要開啟遠程登錄。解決方法如下:
在redis的配置文件redis.conf中,找到bind localhost註釋掉。
註釋掉本機,局域網內的所有計算機都能訪問。
band localhost 只能本機訪問,局域網內計算機不能訪問。
bind 局域網IP 只能局域網內IP的機器訪問, 本地localhost都無法訪問。
我沒有註釋掉bind 127.0.0.1,而是將bind 127.0.0.1 改成了bind 0.0.0.0。
然後要配置防火墻 開放端口6379
啟用redis的密碼驗證功能requirepass參數即可
Redis集群搭建
要想搭建一個最簡單的Redis集群,那麽至少需要6個節點:3個Master和3個Slave。為什麽需要3個Master呢?如果你了解過Hadoop/Storm/Zookeeper這些的話,你就會明白一般分布式要求基數個節點,這樣便於選舉(少數服從多數的原則)
通過MySQL自動同步刷新Redis,原文地址
緩存最要註意的就是一致性問題。
redis 本身有持久化,為什麽還要寫進 mysql 呢?
1. 場景不一樣, redis 的持久化是附加功能, mysql 的持久化是核心功能
2. redis 的 flushdb 、 flushall 太犀利了,用 redis 來持久化數據總感覺不靠譜
3. 持久化機制不一樣,舉個例子來說,當數據量達到 10G 的時候,你改了幾條數據, mysql 只增量地持久化這幾條數據;而 redis 只知道自己該持久化了,然後把 10G 數據完整地從內存 dump 到磁盤,是不是很過癮
4.redis 的持久化,特別是 AOF 一點也不靠譜,對性能影響太大, 開過之後再也不想開了. RDB 會丟數據.
5.mysql做一些後期統計
redis是高性能內存緩存,容量依賴於物理內存。如果你物理內存只有2G,卻想用Redis存20G的東西,這是錯誤的用法。
而mysql對內存依賴沒Redis嚴重,但mysql對硬盤會有一定程度的依賴。如果硬盤性能不好,mysql在保存大於物理內存數量的數據時,性能也不會好。
Memcached,對於緩存對象大小有要求,單個對象不得大於1MB,且不支持復雜的數據類型,譬如SET等。
本文出自 “盡力而為” 博客,請務必保留此出處http://yanjiu.blog.51cto.com/673670/1922654
redis