數據庫分類
- 關係型數據庫:MySQL、SQL server、oracle、…
- 非關係型數據庫(NoSQL):Redis、MongoDB、CouchDB、Memcached(也算)
Redis簡介
說明
1.也是類似於memcached的Key-Value存儲機制 2.是非關係型數據庫的一種 3.官網:redis.io,中文網:redis.cn
特點
1.能夠持久化存儲數據 2.支持更多的數據類型 3.支持集羣,主從同步
優點
1.具有memcached的所有特徵,但是比其更強大,是超級增強版的memcached 2.可以做到數據的安全存儲,能夠進行持久化存儲,支持事務 3.擁有更多的數據類型,可以進行復雜的運算 4.可以勝任memcached不能完成的更加複雜的業務場景
Redis安裝
解壓:tar -zxvf redis-4.0.1.tar.gz
複製:cp -R redis-4.0.1 /usr/local/redis
進入:cd /usr/local/redis
安裝:make install
服務:
cd /usr/local/redis/src,該目錄下有兩個可執行文件,若有必要可以將改目錄添加到$PATH環境變量中 客戶端:redis-cli 服務端:redis-server 啓動測試:./redis-server #默認不會後臺執行,需要修改配置文件
修改配置
cd /usr/local/redis cp redis.conf redis_6379.conf #拷貝配置文件 修改配置文件redis_6379.conf爲:daemonize yes #後臺執行 cd utils #進入目錄 cp redis_init_script redis_init_script_6379 #拷貝啓動腳本 修改啓動腳本redis_init_script_6379如下: REDISPORT=6379 EXEC=/usr/local/redis/src/redis-server CLIEXEC=/usr/local/redis/src/redis-cli CONF="/usr/local/redis/redis_${REDISPORT}.conf" ./redis_init_script_6379 start #啓動服務
開機啓動
修改用戶開機啓動配置文件:/etc/rc.local /usr/local/redis/utils/redis_init_script_6379 start
服務測試
1.查看進程:ps aux | grep redis 2.使用客戶端連接 /usr/local/redis/src/redis-cli 連接參數: --help:獲取幫助 -h:指定主機 -p:指定端口號 -a:指定密碼 redis-cli [-h 127.0.0.1] [-p 6379] 127.0.0.1:6379> ping PONG quit #退出 3.密碼管理,默認是沒有密碼的,使用密碼有以下兩種方式 1.單次有效,通過命令設置 獲取密碼:config get requirepass 設置密碼:config set requirepass 123456 密碼授權:auth 123456 2.永久生效,修改配置文件 /usr/local/redis/redis_6379.conf requirepass 123456 說明:不指定密碼也可以連接成功,但是什麼權限都沒有
Redis命令
常用:
ping:測試連接情況,返回PONG表示正常
quit:退出
auth:指定密碼
select:選擇庫,總共16個,0~15,默認在第0個
info:查看服務器信息
command:查看能夠使用的命令
flushdb:清空當前庫
flushall:清空所有庫
save:前臺持久化操作
bgsave:後臺持久化操作
exists:判斷鍵是否存在
del:刪除指定的鍵
字符串(string)
get:獲取
set:設置
getset:獲取後設置
mset:設置多個
mget:獲取多個
incr:遞增(加1)
incrby:指定幅度的遞增
incrbyfloat:指定幅度的遞增一個浮點數
decr:遞減(減1)
decrby:指定幅度的遞減
append:追加
哈希(hash)
hdel:刪除
hexists:判斷是否存在
hget:獲取
hgetall:獲取所有
hkeys:獲取所有的鍵
hvals:獲取所有的值
hlen:獲取數量
hset:設置
hmget:獲取多個
hmset:設置多個
列表(list)
lpush:從左邊插入數據
lrange:顯示某個範圍內的數據,lrange m6 0 -1,表示顯示全部數據
lpop:從左邊彈出數據
rpush:從右邊插入數據
rpop:從右邊彈出數據
llen:顯示個數
無序集合(set):不能重複
sadd:添加數據
scard:個數統計
sdiff:計算差集
sinter:計算交集
sismember:判斷數據是否在集合中
smembers:返回所有元素
smove:移動元素
spop:隨機移除元素,可以指定個數
srandmember:隨機返回一個元素,但是不移除
srem:移除元素
有序集合(sorted set)
zadd:添加元素
zcard:統計元素
zcount:指定區間統計
zrange:返回索引區間內的值
。。。。
安裝phpredis
解壓:unzip phpredis-php7.zip
進入:cd phpredis-php7
解壓:phpize
配置:./configure --with-php-config=/usr/local/php7/bin/php-config
編譯:make
安裝:make install
修改php配置文件:將上一步編譯的動態庫添加到/usr/local/php7/etc/php.ini
extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/redis.so
重啓PHP服務:service php-fpm restart
測試:寫一個phpinfo(),查看是否有redis擴展
代碼測試:
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('123456');
$redis->set('test','ok');
可以參考github或提供的中文手冊
持久化存儲
redis持久化存儲有兩種方式:RDB和AOF。RDB是寫存儲文件,AOF是將執行的命令記錄到文件中;若沒有進行持久化操作,redis與memcached是一樣的,相當於基於內存數據庫。
RDB,Redis DataBase,將數據寫入臨時文件,做持久化操作時將臨時文件替換原有的。
優點:持久化操作會單獨啓動一個子進程,主進程不會對齊有任何IO,可以保證數據的安全可靠 缺點:持久化操作是有間隔的,那麼在此期間出現問題,可能會導致數據的丟失。因此,該方式不嚴謹 配置: dbfilename dump.rdb #保存的數據庫 dir ./ #保存位置 save 900 1 #更改了1個key,900秒後自動持久化存儲 save 300 10 #更改了10個key,300秒後自動持久化存儲 save 60 10000 #更改了10000個key,60秒後自動持久化存儲 說明:使用save進行save進行前臺保存,使用bgsave進行後臺保存,重啓服務即可從dump.rdb中恢復數據
AOF,Append Only File,是將執行的命令記錄下來,重新執行命令即可完成數據恢復
優點:可以保持更高的數據完整性 缺點:AOF比RDB文件大得多,且恢復慢 配置: appendonly yes #開關,默認是關閉的 appendfilename "appendonly.aof" #保存文件 appendfsync everysec|always|no #同步頻率,每秒|立即|從不(完全依賴OS) 自動重寫配置:兩個條件同時滿足纔會觸發AOF重寫操作 auto-aof-rewrite-percentage 100 #新命令佔原文件的百分比 auto-aof-rewrite-min-size 64mb #本次重寫的最小數據量 手動重寫:bgrewriteaof