一、啟動
1、服務端啟動
redis-server
2、客戶端啟動
(1)redis-cli 不支持中文
(2)redis-cli --raw 支持中文
3、運行測試命令
ping
返回PONG則代表連通
二、切換數據庫
1、切換數據庫
select n
redis一共有15個數據庫,故0≤n≤15,默認為0數據庫
三、redis鍵值對說明
1、redis是key-value的數據結構
2、每條數據都是一個鍵值對
3、鍵(key)的類型是字符串(string)
4、值(value)的類型分為5種:字符串(string)、哈希(hash)、列表(list)、無序集合(set)、有序集合(zset)
四、字符串(string)
說明:字符串是redis最基本的類型
1、添加修改值 set
格式:set key value
如果鍵存在則是添加
如果不存在則是修改
案例:set user1 aa 添加一個鍵為user1 值為aa
set user1 bb 將鍵為user1的值修改為bb
2、設置鍵值及過期時間 setex
格式:setex key seconds value 這里過期時間seconds的單位為秒
案例:setex user2 5 cc 設置鍵為user2 值為cc 過期時間為5s
3、設置多個鍵值 mset
格式:mset key1 value1 key2 value2 ...
案例:mset user3 dd user4 ee
4、追加值 append
格式:append key value
案例:append user1 ff get user1就返回bbff
5、獲取值 get/mget
(1)獲取單個值
格式:get key
案例:get user3 返回dd
(2)獲取多個值
格式:mget key1 key2 ...
案例:mget user3 user4 返回dd ee
6、查找 keys
格式1:keys key 查找單個鍵值對
格式2:keys * 查找所有鍵值對
案例1:keys user1
返回user1則該鍵查找到了
返回為空則該鍵沒查找到
案例2:keys *
返回 user1 user3 user4
7、查看鍵值對是否存在 exists
格式:exists key
返回:
1:存在;
0:不存在
8、查看鍵值對類型 type
格式:type key
案例:type user1
返回:string
9、設置鍵過期時間 expire
格式:expire key second
案例:expire user1 5 給user1設置5s過期
注:expire跟setex的區別:expire是給已存在的鍵值對設置過期時間,而setex則是添加鍵值對並且設置過期時間
10、查看過期時間 ttl
格式:ttl key
說明:
返回值:>0:實時有效時間,單位s,=-1:永久有效;=-2:鍵值對不存在
11、刪除 del
(1)刪除單個鍵值對
格式:del key
案例:del user3
(2)刪除多個鍵值對
格式:del key1 key2 ...
案例:del user3 user 4
五、哈希(hash)
說明:
(1)、hash是用於存儲'鍵值對'集合
(2)、每個hash中的鍵可以理解為字段(filed),一個字段(filed)對應一個值(value)
(3)、hash中值(value)的類型為字符串(string)
(4)、同一個hash中字段名(filed)不可重復
1、新增單個字段 hset
格式:hset key filed value
案例:hset huser1 name tom 新增一個hash,其中key為huser1,filed為name,value為tom
2、新增多個字段 hmset
格式:hmset key filed1 value1 filed2 value2 ...
案例:hmset huser2 name marry sex nv age 10
新增一個hash,key為huser2,filed1為name,value1為marry,filed2為sex,value2為nv,filed3為age,value2為10
3、獲取hash中的鍵和值 hget/hkeys/hvals/hgetall
(1)獲取單個值 hget
格式:hget key filed
案例:hget huser2 name ---->marry
(2)獲取多個值 hmget
格式1:hkeys key filed1 filed2
案例:hmget huser2 name sex ---->marry nv兩個值
(3)獲取所有字段 hkeys
格式:hkeys key
案例:hkeys huser1 ---->name sex age三個鍵
(4)獲取所有值hvals
格式:hvals key
案例:hvals huser2 ---->marry nv 10三個值
(5)獲取包含字段(filed)的值(value):hgetall
格式:hgetall key
案例:hgetall huser2 ----> name marry sex nv age 10
4、刪除值 hdel
格式:hdel key filed1 filed2 ...
案例:hdel huser2 name sex
hgetall huser2 ---->age 10只剩最后一個組了
5、刪除整個hash del
格式:del key
案例:del huser2
keys * ---->空,證明被刪除了
六、列表
說明:
(1)、列表中的value的類型為string
(2)、列表中每個值按添加的順序排列
(3)、列表中的每個值是可以重復的
1、新增 lpush/rpush/linsert
(1)從左側添加 lpush
格式:lpush key value1 value2 value3
案例:lpush luser1 aa bb cc
(2)從右側添加 rpush
格式:rpush key value1 value2 value3
案例:rpush luser1 dd ee ff
(3)按指定位置添加 linsert
格式:linsert key before/after value(指定值) value1
案例:linsert luser1 before dd xx 在dd左側添加一個xx
2、獲取 lrange
格式:lrange key start stop 按索引獲取
案例:lrange luser1 0 -1 ---->cc bb aa xx dd ee ff
說明:0代表首位,-1代表末尾 故此處是獲取整個列表
3、修改 lset
格式:lset key index value 按照指定索引位置修改
案例:lset key 3 yy
lrange luser1 0 -1 ---->cc bb aa yy dd ee ff,xx變為yy了
4、刪除值 lreml
(1)刪除單個或多個相同值
格式:lrem key count value (count>0:從頭往為刪count個value,count=0:刪除所有value,count<0:從尾往頭刪count個value)
案例:新增列表:rpush luser2 h0 h1 h2 h3 h0 h1 h2 h0 h1 h2
(1)從頭往尾刪除2個h0
lrem luser2 2 h0
lrange luser1 0 -1 ---->h1 h2 h3 h1 h2 h0 h1 h2,此處前兩個h0被刪除了
(2)從尾往頭刪除2個h1
lrem luser2 -2 h1
lrange luser1 0 -1 ---->h1 h2 h3 h2 h0 h2 后兩個h1被刪除了
(2)刪除所有h2
lrem luser2 0 h2
lrange luser1 0 -1 ---->h1 h3 h0 此處h2被刪除完了
5、刪除列表 del
格式:del key
案例:del luser1
keys * ---->空,
七、有序集合 set
說明:
(1)有序集合里的value類型為string
(2)集合里不允許存在重復值
(3)集合里的值只能添加和刪除,不能修改
1、新增/添加 sadd
key存在則為添加
key不存在則新增
格式:sadd key value1 value2 ...
案例:sadd suser1 aa bb cc dd
2、返回 smembers
格式:smembers key
案例:smembers suser1 ---->aa bb cc dd
3、刪除指定值 srem
格式:srem key value1 value2
案例:srem suser1 aa bb
smembers suser1 ---->cc dd ,aa和bb已經被刪除
4、刪除集合 del
格式:del key
案例:del suser1
keys * ---->空 證明已經被刪除了
八、有序集合 zset
說明:
(1)有序集合里的value類型為string
(2)集合里不允許存在重復值
(3)每個值都會關聯一個分數(score),分數(score)可以為負數
(4)集合里的值只能添加和刪除,不能修改
1、新增/添加 zadd
key存在則為添加
key不存在則新建
格式:zadd key score1 value1 score2 value2 ...
案例:zadd zuser1 1 aa 5 bb 8 cc 3 dd
2、獲取 zrange/zrangebyscore/zscore
(1)獲取所有 zrange
格式:zrange key start stop
案例:zrange zuser1 0 -1 ---->aa bb cc dd
(2)獲取所有值及分數 zrange
格式:zrange key start stop withscores
案例:zrange zuser1 0 -1 withscores -->aa 1 bb 5 cc 8 dd 3
(3)按分數范圍獲取 zrangebyscore
格式:zrangebyscore key min max
案例:zrangebyscore zuser1 2 6 ---->dd bb
(4)返回值的分數 zscore
格式:zscore key value
案例:zscore zuser1 aa ---->1
3、刪除值 zrem
(1)刪除指定值 zrem
格式:zrem key value1 value2 ...
案例:zrem zuser1 aa bb
zrange zuser1 0 -1 ---->cc dd,aa和bb被刪除
(2)按分數范圍刪除 zremrangebyscore
格式:zremrangebyscore key min max
案例:zremrangebyscore zuser1 2 6 刪除分數在2到6之間的值
zrange zuser1 0 -1 ---->dd,只剩dd了,aa和bb在上面已經被刪除了,集合里還剩cc 8 dd 3,dd的分數在2到6之間,故刪除,就只剩dd
4、刪除集合 del
格式 del key
案例:del zuser1
keys * ---->空,證明已經被刪除了
注:redis錯誤解決:
錯誤提示:(error) MISCONF Redis is configured to save RDB snapshots
解決方法:127.0.0.1:6379> CONFIG SET stop-writes-on-bgsave-error no