官方文檔:http://redisdoc.com/topic/persistence.html
一、編譯redis源碼和安裝redis
? ? 1.yum install gcc-c++? ? 安裝編譯環(huán)境
? ? 2.make? ? 編譯
? ? 3.make install? ? 安裝,默認安裝到/usr/local/bin下
? ? 4.redis.conf? 修改daemonize為yes,后臺啟動
? ? 5.redis-cli? ? 啟動客戶端? ?驗證通不通ping " "
? ? 6.redi? s-cli shutdown? ? 關閉redis
二、redis使用
? ? 1.select 0? ? 切換數(shù)據(jù)庫
? ? 2.單線程+多路IO復用技術(redis),使用非阻塞socket技術,監(jiān)聽;多線程+鎖(memcache)
? ? 3.redis數(shù)據(jù)類型
? ? ? ? string:字符串,二進制安全酪穿,圖片視頻可以序列化成字符串,512M
? ? ? ? set:無需不重復集合
? ? ? ? list:有序可重復集合
? ? ? ? hash:map雙列集合
? ? ? ? zset:有序不重復集合
? ? 4.????keys * 查看所有的key
? ? ? ? ? ? dbsize? ? 查看key數(shù)量
? ? ? ? ? ? exists key? ? 是否存在
? ? ? ? ? ? type? ? key? ? 類型
? ? ? ? ? ? del? ? key? ? 刪除
? ? ? ? ? ? expire? ? key? ? seconds? ? 設置過期時間
? ? ? ? ? ? ttl? ? key? ? 查看過期時間
? ? ? ? ? ? flushdb? ? 清空當前庫
? ? ? ? ? ? flushall? ? 清空所有庫
? ? 5.string類型常用操作
? ? ? ? ? ? set
? ? ? ? ? ? get
? ? ? ? ? ? append key value2? ?將值追加到value后面
? ? ? ? ? ? strlen? ? value字符串長度
? ? ? ? ? ? setnx? ? key不存在時設置
? ? ? ? ? ? incr? ? 將數(shù)字自增1
? ? ? ? ? ? decr? ? 自減
? ? ? ? ? ? incrby? ? 自增晴裹,自定義數(shù)字
? ? ? ? ? ? mget,mset,msetnx? ? 批量
? ? ? ? ? ? getrange? ? 類似于substring??
? ? ? ? ? ? setex? ? 設置的同時設置超時時間
? ? ? ? ? ? getset? ? 獲取的時候設置新值
? ? 6.list類型常用操作
? ? ? ? ? ? lpush/rpush? ? 推數(shù)據(jù)
? ? ? ? ? ? lpop/rpop? ? 拉取數(shù)據(jù)
? ? ? ? ? ? rpoplpush? k1? k2? ? 從k1右邊取初被济,存入k2左邊
? ? ? ? ? ? lrange? ? 從左開始索引范圍取數(shù)據(jù)
? ? ? ? ? ? lindex? ? 左開始,去索引數(shù)據(jù)
? ? ? ? ? ? llen? ? 長度
? ? ? ? ? ? linsert? l1 before v1 newvaule? 在v1后面插入
? ? ? ? ? ? lrem? l1 n v1? 從左邊刪除n個v1
? ? 7.set無序集合常用操作
????????sadd k1 v1 v2 v3? ? 添加
? ? ? ? smembers? ? 取出所有值
? ? ? ? sismember? ? k1 v1? ? v1是否是k1的成員
? ? ? ? scard? ? 數(shù)量
? ? ? ? srem? k1 v1 v2? ? 批量刪除值
? ? ? ? spop? ? 隨機吐出一個值涧团,會刪除該值
? ? ? ? srandmember k1 n? ?隨機取出幾個值
? ? ? ? sinter? ? k1 k2? ? 交集
? ? ? ? sunion? ? k1 k2? ? 并集
? ? ? ? sdiff? ? k1 k2? ? 差集
? ? 8.hash類型常用操作
? ? ? ? hset? ? k1 f1 value? ? 插入值
? ? ? ? hget? ? k2? f1? ? 取值
? ? ? ? hmset? ? 批量插入值
? ? ? ? hexistskey? ? 查看是否有該屬性
? ? ? ? hkeys? ? 返回所有的屬性
? ? ? ? hvals? ? 返回所有的值
? ? ? ? hincrby? ? 給屬性增加值
? ? ? ? hsetnx? ? 不存在時添加
? ? 9.zset常用操作
? ??????zadd z1 1000 v1 2000 v2 3000 v3? ? 添加
? ? ? ? zrange z1 0 -1 withscores? ?查找
三只磷、redis事務
? ? 1.單獨隔離,事務中的命令序列化泌绣,串聯(lián)喳瓣,按照順序執(zhí)行,不會被其他客戶端打斷
? ? 2.multi -? 命令? - exec
? ? 3.悲觀鎖????赞别,樂觀鎖(watch key)
四.redis持久化
? ? RDB:
? ? ? ? 900秒內(nèi)有一次改變就觸發(fā)寫入畏陕;300秒內(nèi)有10次改變就觸發(fā)寫入;60秒內(nèi)有10000次改變就觸發(fā)寫入
? ? ? ? rdb恢復速度快仿滔;但會丟失數(shù)據(jù)惠毁;文件小
????AOF:
? ? ????需要手動開啟
? ? ? ? 恢復慢犹芹;文件大;可讀的日志文件鞠绰;丟失數(shù)據(jù)概率醒 ;
五蜈膨、主從復制
? ? ? ? ????slaveof????ip? ? port
? ? ? ? ????info replication
? ? ? ? ????master寫? ? slave 讀? ?
? ? ? ? ????先將rdb文件給從機加載屿笼,后面的寫操作直接傳給從機
? ? ? ? ? ? 一主兩仆
? ? ? ? ? ? slave no one反客為主
? ? ????哨兵模式:
? ? ? ? ? ? 新建 sentinel.conf? ? sentinel monitor mymaster? ? ?ip? ? port? 1(至少有多少個哨兵同意遷移的數(shù)量)
? ??????????
? ??????????
? ??????????
? ??