## 數據類型
Redis支持五種數據類型:`string`(字符串),`hash`(哈希),`list`(列表),`set`(集合)及`zset`(sorted set:有序集合)。
### 1.`String`(字符串)操作
> redis中的String在在內存中按照一個name對應一個value來存儲
`set(name, value, ex=None, px=None, nx=False, xx=False)`
在Redis中設置值,不存在則創建,存在則修改
參數 | 意義
---|---
ex|過期時間(秒)
px|過期時間(毫秒)
nx|如果設置為True,則只有name不存在時,當前set操作才執行,同setnx(name, value)
xx|如果設置為True,則只有name存在時,當前set操作才執行
`setex(name, value, time)` 設置過期時間(秒)
`psetex(name, time_ms, value)` 設置過期時間(豪秒)
`mset(name1='***', name2='***',......)` 批量設置值
`get(name)` 獲取值
`mget(*keys)` 批量獲取值
`getset(name, value)` 設置新值,打印原值
`getrange(key, start, end)` 獲取值,并切片,返回切片后的結果
`setrange(name, offset, value)` 修改字符串內容,從指定字符串索引開始向后替換,如果新值太長時,則向后添加
`setbit(name, offset, value)` 對二進制表示位進行操作
`getbit(name, offset)` 獲取name對應值的二進制中某位的值(0或1)
`bitcount(key, start=None, end=None)` 獲取對應二進制中1的個數
`strlen(name)` 返回name對應值的字節長度(一個漢字3個字節)
`incr(name, amount=1)` 自增name對應的值,當name不存在時,則創建name=amount,否則,則自增,amount為自增數(整數)
`incrbyfloat(name, amount=1.0)` 類似`incr()`自增,amount為自增數(浮點數)
`decr(name, amount=1)` 自減name對應的值,當name不存在時,則創建name=amount,否則,則自減,amount為自增數(整數)
`append(name, value)` 在name對應的值后面追加內容
### 2.`Hash`(哈希)操作
> redis中的Hash 在內存中類似于一個name對應一個dic來存儲
`hset(name, key, value)` name對應的hash中設置一個鍵值對。不存在,則創建,否則,修改。
`hget(name,key)` 在name對應的hash中根據key獲取value
`hgetall(name)` 獲取name對應hash的所有鍵值
`hmset(name, dict)` 在name對應的hash中批量設置鍵值對
`hmget(name, keys)` 在name對應的hash中獲取多個key的值
`hlen(name)` 獲取hash中鍵值對的個數
`hkeys(name)` 獲取hash中所有的key的值
`hvals(name)` 獲取hash中所有的value的值
`hexists(name, key)` 檢查name對應的hash是否存在當前傳入的key
`hdel(name,*keys)` 刪除指定name對應的key所在的鍵值對
`hincrby(name, key, amount)` 自增hash中key對應的值,不存在則創建key=amount(amount為整數)
`hincrbyfloat(name, key, amount)` 自增hash中key對應的值,不存在則創建key=amount(amount為浮點數)
`hscan(name, cursor=0, match=None, count=None)`
`hscan_iter(name, match=None, count=None)`
### `List`(列表)操作
> redis中的List在在內存中按照一個name對應一個List來存儲
`lpush(name,*values)` 在name對應的list中添加元素,每個新的元素都添加到列表的最左邊
`rpush(name,*values)` 同`lpush`,但每個新的元素都添加到列表的最右邊
`lpushx(name,value)` 在name對應的list中添加元素,只有name已經存在時,值添加到列表的最左邊
`rpushx(name,value)` 在name對應的list中添加元素,只有name已經存在時,值添加到列表的最右邊
`llen(name)` name對應的list元素的個數
`linsert(name, where, refvalue, value))` 在name對應的列表的某一個值前或后插入一個新值
參數 | 意義
---|---
name|redis的name
where|BEFORE(前)或AFTER(后)
refvalue|列表內的值
value|要插入的數據
`r.lset(name, index, value)` 對list中的某一個索引位置重新賦值
`lrem(name, value, num)` 刪除name對應的list中的指定值
```
name --- redis的name
value --- 要刪除的值
num --- num為0,表示刪除列表中所有的指定值;
num為n,表示從前到后刪除n個;
num為-n:從后向前刪除n個
```
`lpop(name)` 移除列表的左側第一個元素,返回值是移除的元素
`lindex(name, index)` 根據索引獲取列表內元素
`lrange(name, start, end)` 分片獲取元素
`ltrim(name, start, end)` 移除列表內沒有在該索引之內的值
`rpoplpush(src, dst)` # 從一個列表取出最右邊的元素,同時將其添加至另一個列表的最左邊,src要取數據的列表,dst要添加數據的列表
`brpoplpush(src, dst, timeout=0)` 同rpoplpush,多了個timeout, timeout:取數據的列表沒元素后的阻塞時間,0為一直阻塞
`blpop(keys, timeout)` 將多個列表排列,按照從左到右去移除各個列表內的元素;timeout: 超時時間,獲取完所有列表的元素之后,阻塞等待列表內有數據的時間(秒), 0 表示永遠阻塞
`brpop(keys, timeout)` 同blpop,將多個列表排列,按照從右像左去移除各個列表內的元素
### `Set`(集合)操作
> Set集合就是不允許重復的列表
`sadd(name,*values)` 給name對應的集合中添加元素
`smembers(name)` 獲取name對應的集合的所有成員
`scard(name)` 獲取name對應的集合中的元素個數
`sdiff(name, *names)` 在第一個name對應的集合中且不在其他name對應的集合的元素集合
例:
```
import redis,time
r = redis.Redis(host='127.0.0.1', port=6379)
r.sadd("name","a","b")
r.sadd("name1","b","c")
r.sadd("name2","b","c","d")
print(r.sdiff("name","name1","name2"))#輸出:{a}
```
`sdiffstore(dest, name, *names)` 相當于把`sdiff`獲取的值加入到dest對應的集合中
`sinter(*names)` 獲取多個name對應集合的交集
例:
```
import redis,time
r = redis.Redis(host='127.0.0.1', port=6379)
r.sadd("name","a","b")
r.sadd("name1","b","c")
r.sadd("name2","b","c","d")
print(r.sinter("name","name1","name2"))#輸出:{b}
```
`sinterstore(dest, name, *names)` 獲取多個name對應集合的交集,再講其加入到dest對應的集合中;相當于把`sinter`獲取的值加入到dest對應的集合中
`sismember(name, value)` 檢查value是否是name對應的集合內的元素
`smove(src, dst, value)` 將某個元素從一個集合中移動到另外一個集合
`spop(name)` 從集合的右側移除一個元素,并將其返回
`srandmember(name, numbers)` 從name對應的集合中隨機獲取numbers個元素
`srem(name, *values)` 刪除name對應的集合中的某些值
`sunion(*names)` 獲取多個name對應的集合的并集
`sunionstore(dest,*names)` 獲取多個name對應的集合的并集,并將結果保存到dest對應的集合中
### `zset`(有序集合)
> 在集合的基礎上,為每元素排序,元素的排序需要根據另外一個值來進行比較,所以,對于有序集合,每一個元素有兩個值,即:值和分數,分數專門用來做排序
`zadd(name, *args, **kwargs)` 在name對應的有序集合中添加元素
`zcard(name)` 獲取有序集合內元素的數量
`zcount(name, min, max)` 獲取有序集合中分數在min~max之間的個數
`zincrby(name, value, amount)` 自增有序集合內value對應的分數
`zrange( name, start, end, desc=False, withscores=False, score_cast_func=float)` 按照索引范圍獲取name對應的有序集合的元素
參數 | 意義
---|---
name|redis的name
start|有序集合索引起始位置
end|有序集合索引結束位置
desc|排序規則,默認按照分數從小到大排序
withscores|是否獲取元素的分數,默認只獲取元素的值
score_cast_func|對分數進行數據轉換的函數
`zrevrange(name, start, end, withscores=False, score_cast_func=float)` 同`zrange`,集合是從大到小排序的
`zrank(name, value)` 獲取value值在name對應的有序集合中的排行位置(從0開始)
`zrevrank(name, value)` 同`zrank`,集合是從大到小排序的
`zscore(name, value)` 獲取name對應有序集合中 value 對應的分數
`zrem(name, *values)` 刪除name對應的有序集合中值是values的成員
`zremrangebyrank(name, min, max)` 根據排行范圍刪除
`zremrangebyscore(name, min, max)` 根據分數范圍刪除
`zinterstore(dest, *keys, aggregate=None)` 獲取兩個有序集合的交集并放入dest集合,如果遇到相同值不同分數,則按照aggregate進行操作。aggregate的值為: SUM MIN MAX
`zunionstore(dest, keys, aggregate=None)` 獲取兩個有序集合的并集并放入dest集合,其他同`zinterstore`
---
## 其他常用操作
`delete(*names)` 根據name刪除redis中的任意數據類型
`exists(name)` 檢測redis的name是否存在
`keys(pattern='*')` 根據* ?等通配符匹配獲取redis的name
`expire(name ,time)` 為某個name設置超時時間
`rename(src, dst)` 重命名
`move(name, db))` 將redis的某個值移動到指定的db下
`randomkey()` 隨機獲取一個redis的name(不刪除)
`type(name)` 獲取name對應值的類型
- 前端
- js學習
- 瀏覽器默認樣式
- webpack+vue
- 個人常用webpack打包依賴
- vue使用學習
- vue源碼學習
- webpack5配置babel
- 瀑布流布局
- 個人常用庫
- 其他
- centos搭建ss服務器
- ios配置Universal Links
- pdf2htmlEX使用
- python
- python操作redis
- linux部署Django
- dateutil庫(datetime模塊的擴展).md
- docker部署django
- mysql
- 基礎知識
- 常用函數
- join關聯查詢技巧
- linux
- shell備份mysql數據庫
- crontab定時任務
- centos7安裝部署gitlab服務器
- nginx安裝配置
- 收藏夾
- python
- 博客
- 工具
- 其他
- 前端