Redis在Window服務下的啟動和使用
阿新 • • 發佈:2019-02-15
開啟服務端命令:redis-server.exe redis.windows.conf
開啟客戶端命令:redis-cli.exe -h 127.0.0.1(目標IP) -p 6379(預設埠號,不建議修改)
redis設定密碼和修改埠教程:點選開啟連結
在python中使用Redis
import redis from redis import Redis # 建立連線池: # redis-py使用connection pool來管理對一個redis server的所有連線,避免每次建立、釋放連線的開銷。 # 預設,每個Redis例項都會維護一個自己的連線池。可以直接建立一個連線池,然後作為引數Redis, # 這樣就可以實現多個Redis例項共享一個連線池。 POOL=redis.ConnectionPool(host='127.0.0.1', port=6379) CONN=redis.Redis(connection_pool=POOL) #列表型別操作 CONN.rpush('lmw_list','a','b','c') #把列表傳送的伺服器的Redis上 右邊開始 ['c' ,'b','a'] CONN.lpush("lmw_list",'a','b','c') #把列表傳送的伺服器的Redis上 左邊開始 ['a' ,'b','c'] CONN.llen("lmw_origin") # 查詢lmw_origin的長度 CONN.lpop("lmw_list") # 取出lmw_list左邊的值 CONN.delete("lmw_origin") # 刪除列表 #字串操作 CONN.set("lmw_reset",1) CONN.get("lmw_reset") Django-redis使用: import django_redis conn = django_redis.get_redis_connection()
Django-redis:封裝好的redis連線池
一、安裝: pip install django-redis 二、作為 cache backend 使用配置 in settings.py CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", #套接字超時設定 #"SOCKET_CONNECT_TIMEOUT": 5, # in seconds #"SOCKET_TIMEOUT": 5, # in seconds #配置預設連線池 # "CONNECTION_POOL_KWARGS": {"max_connections": 100}, } } } in view.py from django.core.cache import cache def index(request): cache.set("busy", "python", timeout=60*60) # 超時單位:秒 value = cache.get("busy") # python #django-redis 支援永不超時設定. # timeout=0 立即過期 # timeout=None 永不超時 # cache.set("key", "value", timeout=None) # 使用萬用字元搜尋 、刪除 # cache.keys("foo_*") # 搜尋 ["foo_1", "foo_2"] # cache.delete_pattern("foo_*") # 刪除 會返回刪掉的鍵的數量 # 檢視連線池已經開啟多少連線: # from django_redis import get_redis_connection # r = get_redis_connection("default") # connection_pool = r.connection_pool # print("Created connections so far: %d" % connection_pool._created_connections)
Redis 擁有五種型別:String list set zset(有序集合) hash(雜湊)
三、Hash操作 conn.hset(name, key, value) #name對應的hash中設定一個鍵值對(不存在,則建立;否則,修改) conn.hmset('xx', {'k1':'v1', 'k2': 'v2'}) #在name對應的hash中批量設定鍵值對 conn.hget(name,key) #在name對應的hash中獲取根據key獲取value conn.hmget('xx', 'k1', 'k2') #在name對應的hash中獲取多個key的值 hlen(name) # 獲取name對應的hash中鍵值對的個數 hgetall(name) #獲取name對應hash的所有鍵值 hvals(name) # 獲取name對應的hash中所有的value的值 hexists(name, key) # 檢查name對應的hash是否存在當前傳入的key hdel(name,*keys) # 將name對應的hash中指定key的鍵值對刪除 hincrby(name, key, amount=1) # 自增name對應的hash中的指定key的值,不存在則建立key=amount hincrbyfloat(name, key, amount=1.0) # 自增name對應的hash中的指定key的值,不存在則建立key=amount hscan(name, cursor=0, match=None, count=None) # 增量式迭代獲取,對於資料大的資料非常有用,hscan可以實現分片的獲取資料, # 並非一次性將資料全部獲取完,從而放置記憶體被撐爆 hscan_iter(name, match=None, count=None) # 利用yield封裝hscan建立生成器,實現分批去redis中獲取資料 四、String: set key value 設定指定 key 的值 set luo "哈哈" get key 獲取指定 key 的值。 get luo getrange key start end 返回 key 中字串值的子字元 getrange luo 0 1 getset key value 將給定 key 的值設為 value ,並返回 key 的舊值(old value)。 MGET key1 [key2..] 獲取所有(一個或多個)給定 key 的值。 SETNX key value 只有在 key 不存在時設定 key 的值。 STRLEN key 返回 key 所儲存的字串值的長度。 MSET key value [key value ...] 同時設定一個或多個 key-value 對。 五、list: BLPOP key1 [key2 ] timeout 移出並獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。 BRPOP key1 [key2 ] timeout 移出並獲取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。 LINDEX key index 通過索引獲取列表中的元素 LLEN key 獲取列表長度 LPOP key 移出並獲取列表的第一個元素 LPUSH key value1 [value2] 將一個或多個值插入到列表頭部 LPUSHX key value 將一個值插入到已存在的列表頭部 LRANGE key start stop 獲取列表指定範圍內的元素 LREM key count value 移除列表元素 LSET key index value 通過索引設定列表元素的值 LTRIM key start stop 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。 RPOP key 移除並獲取列表最後一個元素 RPUSH key value1 [value2] 在列表中新增一個或多個值 RPUSHX key value 為已存在的列表新增值
redis 相當於一臺電腦的記憶體,訪問速度快
redis一般跟資料庫搭配使用。
客戶端請求資料,先去redis伺服器找資料,沒有去資料庫找
缺點:
1、如果一臺電腦當做redis伺服器,斷電資料丟失
2、儲存容量有限
用途:
1、redis可以做快取
2、redis可以做訊息佇列
特性:
1、可以做資料持久化
2、支援存放多種資料格式(5種)
{
"k1":"python" # "666"
"k2": 666 # redis會轉化給 “666”
"k4":{ #redis只關注第一層的格式
"n1":'xxx', # 'xxx' 改為 {'a':1} ,這是我們定義格式,
"n2":'iii'
}
}
本質:將資料儲存到記憶體中