redis淡淡之談

redis(Remote Dictionary Server)是一種Nosql技術,它是一個開源的高級kv存儲和數據結構存儲系統,它經常被拿來和Memcached相比較,但是Memcached不提供持久化的數據保存機制而redis可以將數據保存在磁盤中,redis不僅僅是能夠存儲key和value這種簡單的鍵值對,還能存儲例如集合、hash表、列表、字典等。redis在整個運行過程中,數據統統都是存儲在內存中的,因此,性能是相當高的,由於此特性,redis對於內存的要求比較高,它會週期性的將內存中的數據寫入在磁盤中,從而實現數據持久化的訪問能力,但是這種存儲只是保證redis在下次啓動還有數據可以讀取,而不是提供訪問。redis是單線程服務的,只有一個線程。redis還支持主從模式以及支持通過lua腳本去編寫擴展,並且支持高可用和分佈式集羣解決方案。
redis是單線程,但是這並不意味着會成爲運行時的瓶頸,每秒能夠支撐50W的併發
ok 精簡一點開始吧
1.啓動:redis-server.exe redis.windows.conf
2.連接:redis-cli.exe -h 127.0.0.1 -p 6379
3.清空:flushall
3.數據類型:
1.String(字符串:鍵值對) set name “ceshi” 插入數據 , get name 獲取 注意:一個鍵值最大能存儲512m
2.Hash(哈希:鍵值對集合 適合存儲對象) hmset ceshi name “woshiguang” age 20 …(至少兩個) 插入數據ceshi的 name,age, hgetall ceshi 獲取數據ceshi
3.List(列表) lpush ceshi data1 像列表ceshi中插入data1 ,lrange ceshi 0 10 獲取列表lrange 0-10的數據
4.Set集合:
a.sad key member 添加member到key對應的set集合中(集合內的元素有唯一性,成功返回1,失敗0),smembers key獲取key集合的數據。無序
b.zadd key score member 添加元素到集合,元素在集合中存在則更新對應score score是用來小到大的排序。ZRANGEBYSCORE key 0 1000 獲取 key集合0-1000的數據 有序

string(字符串)

4.DEL key 如果鍵被刪除成功,命令執行後輸出 (integer) 1,否則將輸出
5.DUMP key 序列化key ,並返回被序列化後的值
6.EXISTS key 檢查key是否存在 若 key 存在返回 1 ,否則返回 0 。
7.EXPIRE key 60 設置60秒後自動刪除
8.TYPE key 返回key所儲存值的類型
9.RENAME key newkey 修改key的名稱 RENAMENX key newkey 僅當newkey不存在時,將key改名爲newkey
10.RANDOMKEY 從當前數據庫中隨機返回一個key
11.TTL key 返回key的剩餘時間 PTTL key返回key剩餘過期時間
12.GETRANGE key 0 1 截取key的前兩位。 SETRANGE key1 6 “Redis” 替換key從第六位開始
13.GETSET key value1 設置key爲value1 並返回 上一個值。
14 MGET key1 key2… 獲取key1 key2 …或者更多key的值 MSET key1 “Hello” key2 “World” 同時設置key1 key2 MSETNX rmdbs “MySQL” nosql “MongoDB” key-value-store “redis” 僅當全部key不存在時有效
15.SETEX mykey 60 redis 設置mykey 的值爲redis 並且過期時間爲60m
16.exists key 判斷key是否存在
17.setnx key vaule 當key不存在時設置值爲value 若存在,則不起作用
18.STRLEN mykey 獲取mykey的長度
19.incr mykey 自增1
20.incrby key 20 給key增加20(incrbyfloat 增加浮點數) 並返回key 如果 key 不存在,那麼 key 的值會先被初始化爲 0 ,然後再執行 INCRBY 命令。(默認整數)
21.decr key 給key自減1 如果 key(整數) 不存在,那麼 key 的值會先被初始化爲 0 ,然後再執行 DECR 操作。
22.decr key 20給key減少20
23.APPEND mykey value 在key後追加value
Hash(對象)
24.hset key name “wo” age 23 設置key對象 {name:“wo”,age:23}
25.hdel key name 刪除key對象的name屬性
26.hexists key name 查看key中name對象是否存在,是 1,否0
27.hgetall key 獲取整個key對象
28.hget key age 獲取key對象的age屬性
29.hincrby key age 20 使key字段的整型age加20 hincrbyfloat(浮點數)
30.hkeys key 獲取key裏的元素名
31.hlen key 獲取key的元素長度
32.hmget key age name 獲取key中指定元素的值
33.hmset key name “Hello” age 40同時設置key的指定多個字段
34.hvals key 獲取key中所以字段的值
35.hsetinx key name “hello” 當key中name字段不存在時設置name=‘hello’
List(列表)
36.lpush key value1 value2 插入value1,value2 兩個數據到key並生成key (rpush插入到最後面)(rpushx 插入已知key的最後面)
37.lrange key 0 10 獲取key的前10條數據 (先入後出)
38.blpop key 10 返回一個含有兩個元素的列表,第一元素是被彈出元素所屬的 key ,第二個元素是被彈出第一個元素的值。(先入後出)
39.brpop key 10 返回一個含有兩個元素的列表,最後一個元素是被彈出元素所屬的 key ,第二個元素是被彈出最後元素的值。(後入後出)
40.brpoplpush key1 key2 10 從key中彈出第一個值,並插入到key2中,並返回這個值
41.lindex key 1 返回key的第一個元素 -1 最後一個
42.linsert key before value1 value2 在key的value1的(before/after)插入vaule2
43.llen key 返回key的長度
44.lpop key 返回並移除key的第一個元素(rpop)移除最後一個
45.lpushx key vaule1 value2 插入value,value2到已知key中,若key不存在則插入無效。
46.lrem key count value2 移除key中的value2 count=0 移除所有的 count>0 從頭開始搜索移除count個 <0從尾開始移除count個
47.lset key 0 value1 設置key的第0位爲vaule1
48.ltrim key 0 1 保留key的第0 到1位 其他的刪除
49.rpoplpush key1 key2 10 從key中彈出最後個值,並插入到key2中,並返回這個值

set(無序集合,元素有唯一性)

50.sadd key “value1” “value2” 添加vaule1 value2 到key(非集合會報錯)中
51.smembers key 查詢key集合
52.scard key 獲取key成員數
53.sdiff key1 key2 返回key1和key2的差集 並返回
54.sdiffstore key key1 key2 返回key1和key2的差集並插入到key中並返回
55.sinter key1 key2 返回key1和key2的交集
56.sinterstore key key1 key2 返回key1和kye2的交集並存在key中
57.sismember key “value” 判斷value是否在key中 是 返回1 否則0
58.smove key1 key2 value1 將key1中的value1移到key2中 key2中的元素不重複
59.spop key 移除並返回key中的隨機元素
60.srandmember key count 返回key中的隨機count個元素
61.srem key value1 移除key中的value1 (不存在的成員元素會被忽略。)
62.sunion key key1 返回key key1的並集 (key1不存在被視爲空集)
63.sunionstore key key1 key2 返回key1,key2的並集,並保存在key中
64.sscan myset1 0 match h* Sscan 命令用於迭代集合鍵中的元素。
sorten set(有序集合,元素有唯一性)
65.zadd key 1 value2 2 value2 3 value3 向有序集合key添加一個或多個成員,或者更新已存在成員的分數 (1 2 3 是分數)
66.zcard key 獲取有序集合的成員數
67.zcount key min max 計算在有序集合中指定區間分數的成員數
68.zincrby key score value1 給key有序集合的value1的分數加上score 並返回現在的分數
69.zrange key 0 -1 withscores 返回key有序集合所有元素並排增序 zrevarange 降序
70.zinterstore key score key1 key2 計算key1,key2的交集並以score存放在key裏
71.zlexcount key min max 計算key集合中字典區間 min-max區間的成員數量
72.zrangebylex key min max 通過字典區間返回有序集合的成員
73.zrangebyscore key (1 5 返回所有1<score<=5 的元素 (5 (10 5<score<10
74.zrank key vaule 返回key中value的升序排名 zrevrank
75.zrem key vaule1 value2 移除有序集合中的 value1 value2 不存在的參數會被忽略
76.zremrangebylex key min max 移除字典區間min-max 的所有成員 並返回移除成員的個數 zremrangebyrank 移除指定排名的成員 zremrangebyscore 指定分數區間
77.zrevrange key start stop 返回指定區間內的成員,通過索引,分數從高到低 降序 zrevarangebyscore 按指定分數區間,查詢 降序
78.zscore key value1 返回value1的分數值
79.zunionstore key key1 key2 計算key1 key2的並集,並保存在key中
80.zscan key cursor 命令用於迭代有序集合中的元素(包括元素成員和元素分值)
81.基數集:數據集中互不重複元素的集合 基數:基數集的長度
82.訂閱:subscribe key1,key2 訂閱頻道 key1,key2… (訂閱者)
83.發佈:publish redis “hello” 發佈信息後訂閱者會接收到消息 (發佈者)
84.Psubscribe key1 key2 訂閱多個頻道(則需要多個發佈客戶端)
85.PUBSUB CHANNELS 查看系統訂閱頻道列表
86.PUNSUBSCRIBE key1 退訂給定模式的key1頻道
87.UNSUBSCRIBE KEY1 退訂key1頻道

88.事務:
a.事務是一個單獨的隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端發送來的命令請求所打斷。
b.事務是一個原子操作:事務中的命令要麼全部被執行,要麼全部都不執行。
89.redis事務 開始 -> MULTI 命令列隊-> set name ceshi get name 觸發事件 ->exec(事務開始)
90.discard: 事務取消 開始 -> MULTI 命令列隊-> set name ceshi get name 取消事務 ->discard
91.watch key1,key2 監聽key1,key2,在事務執行前key若被其他命令改動,則事務被打斷。
92.unwatch key1,key2 取消對key1,key2的監聽

93.指令:eval script numkeys key [key …] script lua函數
94.SCRIPT LOAD “return ‘hello’” 生成sha1校驗碼
95.EVALSHA sha1 numkeys 執行sha1校驗碼中國的腳本
96.script flushal 清除所有的Lua腳本
97.script kill 殺死當前正在運行的Lua腳本(當且僅當這個腳本沒執行 過任何操作時,該命令生效)
98.script load script1 將script1腳本添加到腳本緩存中並生車sha1校驗碼 再 EVALSHA sha1 numkeys執行這個命令
99.select 1 選擇數據庫1 默認爲0
100.client getname 獲取當前連接名稱
101.client setname 設置當前連接名稱
102.flushall/flushdb 刪除所有/當前 數據的所有key
103:備份/恢復 save/bgsave(後臺執行) 如果需要恢復數據,只需將備份文件 (dump.rdb) 移動到 redis 安裝目錄並啓動服務即可。
104.congif get requirepass 驗證數據庫是否設置了密碼
105.config set requirepass “ceshi” 設置密碼 爲ceshi auth ceshi 密碼連接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章