redis基本操作
什么是redis
redis是一個高性能的key-value存儲的NoSQL數據存儲系統。
為什么是nosql——大數據下需要更好的性能
補充:
1、一共有15個數據庫,select 1; 默認是0號庫
2、單線程多路IO復用
3、與memchche的區別:支持多數據類型,支持持久化,單線程多路IO復用
基本命令
【數據庫操作】
1、選擇數據庫【0-15】
selectc 16
2、查看key的數量
bdsize
3、云服務器打開客戶端
redis-cli
4、查看是否含有key
keys *
5、清空當前庫,清空所有庫
flushdb
flushall
【常規操作】
1、添加key
set key value
2、查看key是否存在
exists key
3、刪除key
del key
unlink key
4、設置過期時間為10s「-1表示用不過期,-2表示已過期」
expire key 10
查看還有多少秒過期
ttl key
5、獲取key
get key
5種數據類型
字符串
【String:底層的數據結構是一個簡單動態字符串,實現有一點類似Java中的ArrayList】
1、追加 「如果是3,表示添加成功;如果是6,表示追加成功」
append key value
2、獲得該key的value長度
strlen key
3、只有key不存在時,才設置key的值「1表示設置成功,0表示失?。ㄒ呀洿嬖谠搆ey)」
setnx key 123
4、加減1
incr key
decr key
5、加減10
incrby key 10
decrby key 10
6、設置、得到多個
mset
mget
msetnx
7、獲取范圍的值「包含前后的值,如0 3 ,則表示0 1 2 3位置的值」
getrange <key> <起始位置> <結束位置>
8、設置某位置的值
setrange <key> <起始位置> <結束位置>
9、添加key,直接設置過期時間
setex <key> <過期時間> <value>
10、查看舊值的同時,更新值,以新換舊
getset <key> <value>
列表
【list】「底層原理是雙向鏈表」
1、添加「lpush是逆序,rpush是添加時的順序」
lpush <key> v2 v3 v4
rpush <key> v2 v3 v4
2、獲取所有值
lrange <key> 0 -1
3、獲取最左邊|最右邊的值 「會刪除該元素」「值在key在,值光key無」
lpop <key>
rpop <key>
4、從key1右邊吐出一個值,插到key2列表的左邊
rpoplpush <key1> <key2>
5、獲取列表的長度
llen <key>
6、指定位置插入「會在找到的第一個元素后面插入」
linsert <key> before <value> <newValue>
linsert <key> after <value> <newValue>
7、刪除指定個數的某元素 「從走往右,刪除兩個v2元素」
lrem <key> 2 v2
8、替換,將列表key下標為index的值替換成value
lset <key> <index> <value>
集合
【Set】「底層結構是value=null的哈希表,添加刪除的復雜度都是O(-1)」
1、添加
sadd <key> <value1> <value2> <value3>
2、取值
smembers <key>
3、判斷集合中是否含有 <value>,有1,無0
sismember <key> <value>
4、集合大小
scard <key>
5、刪除集合中某個元素
srem <key> <value1> <value2> …
6、隨機從該集合中吐出一個值,會刪除
spop <key>
7、隨機從該集合中取出n個值,不會刪除
srandmember <key> <n>
8、把value從set1中移到set2中
smove <key1> <key2> <value>
9、返回兩個集合的交集元素
sinter <key1> <key2>
10、返回兩個集合的并集元素
sunion <key1> <key2>
11、返回兩個集合的差集元素(key1中有的元素,key2中沒有的)
sdiff <key1> <key2>
哈希

有序集合
【hash】【底層結構是壓縮列表+哈希表,適合儲存對象】
1、添加
zadd <key> <score> <value>
zadd lang 200 java 100 python
2、獲取全部
zrange <key> 0 -1
zrange lang 0 -1
zrange lang 0 -1 withscores
3、獲取區間中的元素
zrangebyscore <key> 100 200
逆序區間
zrevrangebyscore lang 200 100
4、增加score
zincrby <key> <increment> <value>
zincrby lang 100 java
5、區間內的元素個數
zcount <key> <min> <max>
zcount lang 1 500
6、得到排名(從0開始)
zrank <key> <value>
zrank lang java
7、刪除該集合下,指定值的元素
zrem <key> <value>

浙公網安備 33010602011771號