Redis

數據庫分類

  • 關係型數據庫: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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章