忙了很久一直沒時間整理工作中的零零星星,現在把工作過程中的點點滴滴的筆記搬到博客上,以饗讀者和自己;
0. redis基本路徑 Selected config: Port : 6379 Config file : /etc/redis/6379.conf Log file : /var/log/redis_6379.log Data dir : /var/lib/redis/6379 Executable : /usr/local/bin/redis-server Cli Executable : /usr/local/bin/redis-cli Lua啟動,選擇加載配置項 服務端: #/usr/local/bin/redis-server /etc/redis/6379.conf 客戶端: #/usr/local/bin/redis-cli Redis數據類型及操作: String: 指令:{ set setnx :如果key已經存在, 返回0 setex :指定鍵值對的有效期, setex [key] [expire] [value] /類似於:set [key] [value] [EX expire] setrange :設置key-value值的子字符串,下標從0開始到第i位置,不包含i mset msetnx get getset getrange mget incr incrby decr decrby append strlen } Hash:是一個string類型的field-value的映射表,它的添加刪除平均都是O(1)的效率 指令:{ hset hsetnx hmset hget hmget hincrby hexists hlen hdel hkeys hvals hgetall } List:是一個鏈表結構, 主要功能是pop,push,獲取一個范圍的所有值等,key理解為鏈表的名字 list類型其實就是每一個子元素都是string類型的雙向鏈表. 指令:{ lpush rpush linsert : linsert key [BEFORE|AFTER] [pivot] [value] 在list的特定的值的位置之前或之后添加字符串元素 lset : lset key [index] [value] 設置list中指定下標的元素值 lrem : lrem key [count] [value] 從list中刪除count個和value相同的元素 count>0,從頭刪除; count=0,全部刪除; count<0,從尾刪除; ltrim : ltrim key [start] [stop] 保留key的值中指定范圍內的數據 lpop : 從list的頭部刪除元素 rpop : 從list的尾部刪除元素 rpoplpush : rpoplpush [source] [destination], 整個操作是原子的 從source的尾部移除元素,並添加到destination的頭部,返回被移除的元素值 lindex : lindex key [index] 取list中index位置的元素 llen : 返回key對應list的長度 } Set: 指令:{} 鍵值指令: [ keys :返回給定pattern的所有key exists: 確認一個key是否存在 del : 刪除一個key expire : 設置一個key的過期時間(秒為單位) ttl : 用於獲取key的有效時長 persist : 移除給定key的過期時間 move : 把當前數據庫中的key移動到其它庫中 rename : 重命名key ] 服務指令: [ select :選擇數據庫存取, redis數據庫編號從 0~15 默認16個庫 dbsize :獲取當前數據庫的key info : 獲取服務器的信息和統計,用於說明服務器的基礎信息,包括版本啟動時間等; config get: 獲取服務器配置信息 flushdb : 刪除當前選擇數據庫中的所有key flushall : 刪除所有庫中的所有key ] 主從復制基本配置: Redis主從復制中一個主服務可以有多個服務, 一個從服務可以有多個從服務; 對應配置,只需要修改redis.conf中的slaveof參數 #slaveof <masterip> <masterport> slaveof 127.0.0.1 6379 啟動master #redis-server /usr/local/redis/conf/redis_6379.conf #redis-cli 啟動slave(假設端口3689) #redis-server /usr/local/redis/conf/slave.conf #redis-cli -p 6389 如果master服務設置有密碼,則需要配置masterauth參數 masterauth <master-password> 查看redis連接數 redis-cli info | grep connected 如果客戶端的idle空閑時間太長,連接池維持了太多的連接,則需要把不用的連接及時釋放掉; redis 127.0.0.1:6379> client list redis 127.0.0.1:6379> CONFIG SET timeout 30 Cluster集群配置 cluster-enabled yes 開啟 每一個集群節點有一個集群配置文件;它不是手工創建的,是redis節點創建和更新的; 確保同一系統上運行的redis集群節點的配置文件名不重疊 1. redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件, 並且在此基礎上實現了master-slave(主從)同步 2. pipeline 壓縮請求數量 pipeline機制將多個命令匯聚到一個請求中,可以有效減少請求數量,減少網絡延時。 3. script 壓縮復雜請求 script核心思想是在redis命令里嵌入Lua腳本,來實現一些復雜操作。 4. cluster Redis 集群不像單機版本的 Redis 那樣支持多個數據庫,集群只有數據庫 0,而且也不支持 SELECT 命令。