啟動后雜項基礎知識
- 在
/usr/local/bin下執行命令redis-benchmark可以測試redis在機器運行的效能 - 默認端口是
6379 - 單進程
- 單進程模型來處理客戶端的請求。對讀寫等事件的響應 是通過對epoll函數的包裝來做到的。Redis的實際處理速度完全依靠主進程的執行效率
- Epoll是Linux內核為處理大批量文件描述符而作了改進的epoll,是Linux下多路復用IO接口select/poll的增強版本, 它能顯著提高程序在大量並發連接中只有少量活躍的情況下的系統CPU利用率。
- 默認16個數據庫,類似數組下表從零開始,初始默認使用零號庫,可在配置文件配置
select命令切換數據庫dbsize查看當前數據庫的key的數量flushdb:清空當前庫flushall;通殺全部庫- 統一密碼管理,16個庫都是同樣密碼,要么都OK要么一個也連接不上
- Redis索引都是從零開始
Redis的五大數據類型
keys關鍵字
keys *:查看所有keyexists [key]:判斷某個key是否存在move key db:移動到另一個庫中,移動后當前庫就沒有了expire key 秒:為給定的key設置過期時間ttl key:查看還有多少秒過期- -1表示永不過期
- -2表示已過期
type key查看你的key是什么類型

String
- string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。
- string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。
- string類型是Redis最基本的數據類型,一個redis中字符串value最多可以是512M
常用命令
- set/get/del/append/strlen
- Incr/decr/incrby/decrby,一定要是數字才能進行加減
- getrange/setrange
- setex(set with expire)鍵秒值 / setnx(set if not exist)
- mset/mget/msetnx
- getset(先get再set)
Hash(重要)
KV模式不變,但V是一個鍵值對
#添加一個/查詢一個/添加多個/查詢多個/刪除一個或多個
hset/hget/hmset/hmget/hgetall/hdel key field value
hset user id 1
hmset user name birdy age 18
hmget user id #1
hmget user #1 birdy 18
hgetall user #id 1 name birdy age 18
#獲取哈希表key的字段數量
hlen key
hlen user #3
#哈希表key是否存在field屬性
hexists key field
#獲取哈希表key的所有屬性/值
hkeys/hvals key
#為哈希表key執行字段的整數值/浮點值增加increment
hincrby/hincrbyfloat key filed increment
#添加並判斷是否已存在,若存在則添加失敗
hsetnx key field value
List
可重復單值多value,list存儲類似與棧
常用命令
#push:插入 l(left):棧頂,插入與讀取順序相反 r(right):棧尾,順序相同 lrange:查
lpush/rpush/lrange
LPUSH list1 1 2 3 4 5
LRANGE list1 0 -1 #0和-1是索引值,0~-1表示查全部 結果為 5 4 3 2 1
LPUSH list2 1 2 3 4 5
LRANGE list2 0 -1 #1 2 3 4 5
#彈出,l:棧頂,后進先出 r:棧尾,先進先出
lpop/rpop
lpop list1 #4 3 2 1
rpop list1 #4 3 2
#按照索引下標獲得元素(從上到下)
lindex
lindex list2 2 #3
#獲取list長度
llen
llen list2 #5
# 刪N個value
lrem key N value
rpush list3 1 1 2 2 2 2
lrem list3 3 2 #刪除3個2 結果:1 1 2
#截取指定范圍的值后再賦值給key
ltrim key start end
rpush list4 1 2 3 4 5
ltrim list4 0 2
lrange list4 0 -1 #1 2 3
#移除源列表的最后一個元素添加到目的列表
rpoplpush 源列表 目的列表
#通過索引改變列表值
lset key index value
#在目標值前/后插入value
linsert key before/after 目標值 value
Set
無重復單值多value
#添加/查詢/是否存在
sadd/smembers/sismember key member
#獲取集合里面的元素個數
scard key
#刪除集合中元素
srem key value
#隨機返回集合中1個或多個隨機數
srandmember key [count]
#隨機出棧
spop key
#將key1里的某個值賦給key2
smove key1 key2 在key1里某個值
#數學集合類
差集:sdiff 交集:sinter 並集:sunion
sadd set1 1 2 3 4 5
sadd set2 a b c 1 2
sdiff set1 set2 #3 4 5
sinter set1 set2 #1 2
sunion set1 set2 #1 2 3 4 5 a b c 真實情況下這些值是沒有順序的

Zset
在set基礎上,加一個score值。 之前set是k1 v1 v2 v3, 現在zset是k1 score1 v1 score2 v2
#向有序集合中添加或更新成員/查詢成員
zadd key score1 member/zrange key 索引start 索引end [withscores]
ZADD score 60 d 70 c 80 b 90 a
ZCARD score 0 -1 #d c b a 只有member
ZCARD score 0 -1 withscores #60 d 70 c 80 b 90 a
#返回滿足分數區間的值
zrangebyscore key min max
ZRANGEBYSCORE score 60 80 #d c b
選項:
withscores 是否帶分數返回
( 不包含
limit 開始索引 結束索引
#刪除有序結合成員
zrem key 某分數對應下member
ZREM score d
ZRANGE score 0 -1 #c b a
#計算有序區間的成員數
zcard/zcount key min max
#獲得索引值
zrank key member
zrank score a #2,a的索引為2
#獲得成員對應分數
zscore key member
zscore score a #90
#逆序獲得下標值
zrevrank key member
zrevrank score a #0
#逆序查詢成員
zrevrange key start end
#查詢區間成員並逆序顯示
zrevrangebyscore key min max
