1. 程式人生 > 其它 >【Redis】Redis基礎操作 & Pipeline

【Redis】Redis基礎操作 & Pipeline

技術標籤:RedisPythonredis

目錄

Redis

Redis在大量資料讀取儲存時,要注意讀寫分離,寫入使用主庫,讀取使用從庫,緩解主庫壓力

Redis連線

  • python
import redis
rc = redis.Redis(host=HOST, port=POST)
  • shell
# 使用--raw時,中文輸出不會亂碼
redis-cli --raw -h HOST -p POST
  • scala
import redis.clients.jedis.Jedis
redisClient = new Jedis(HOST, POST, timeout)

Redis基礎操作

Redis支援五種資料型別:string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)

命令操作
DEL key刪除key
EXISTS key判斷key是否存在
EXISTS key判斷key是否存在
EXPIRE key seconds給key設定過期時間,以秒為單位
TTL key返回key過期時間
  • 字串(String)
命令操作
SET key value檢視長度
GET key 0 -1檢視內容
  • 雜湊(Hash)
命令操作
HGETALL key獲取key的所有內容,是一個字典
HGET key field獲取key中某個欄位的內容,是一個值
HMSET key map批量儲存key的內容
HSET key field儲存key中某個欄位的內容
  • 佇列(List)
命令操作
LLEN key檢視長度
LRANGE key 0 -1檢視所有內容
LRANGE key 0 -1檢視所有內容
LPOP key移出佇列第一個元素
LPUSH key將元素插入佇列頭部
RPOP key移出佇列最後一個元素
RPUSH key將元素插入佇列尾部
  • 集合(Set)
命令操作
SADD key member新增元素
SREM key member刪除元素
smembers key檢視所有元素

Redis Pipeline

當資料量很大的時候,取redis不斷連結需要耗費大量時間,因此可以使用pipeline批量進行資料操作,減少連結及通訊時間

  • python
# python demo
def pythonPipelineDemo:
    pipe = rc.pipeline()
    for key in keys:
        pipe.hgetall(mid)
    result = pipe.execute()
    #結果為有序列表
    for i in range(len(keys)):
        print keys[i], result[i]
  • scala
// scala demo
import redis.clients.jedis.Jedis
import scala.collection.JavaConverters._
def scalaPipelineDemo() = {
    val pipe = redis.pipelined()
    keys.foreach(key => {
      pipe.hgetAll(key)
    })
    // pipe.sync() // 若不需要返回結果可使用
    val result = pipe.syncAndReturnAll().asScala
    result.foreach(res => {
      println(res)
    })
}