日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

redis和memcached缓存

發布時間:2023/12/13 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis和memcached缓存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

memcached

memcache開源的,高性能,高并發分布式內存緩存系統,天生支持集群

memcached下載地址:

http://memcached.org/downloads

python實現memcached緩存

pip3 install python-memcached

import memcache aa=memcache.Client(["10.0.0.20:11211"],debug=True) aa.set("k1","v1") print(aa.get("k1"))

?

memcached方法使用

import memcache aa=memcache.Client([("10.0.0.20:11211",1),("10.0.0.20:11212",2),("10.0.0.20:11213",1)],debug=True) #會存到11212中 aa.set("k1","v1") aa.replace("k1","hahaha") aa.set('k2', '1') aa.incr('k2',100) print(aa.get("k2")) aa.decr('k2',50) print(aa.get("k2"))

?

?

import memcache aa=memcache.Client([("10.0.0.20:11211",1),("10.0.0.20:11212",2),("10.0.0.20:11213",1)],debug=True,cache_cas=True) print(aa.gets("product_count")) #aa.set("product_count","111") #在gets和最后的cas之間,如果修改值,就會拋出異常 aa.cas("product_count","899")

?

?

redis

redis持久化存儲系統,全稱remote directory server,是基于key-value的持久化數據庫存儲系統。redis和memcached很相似,redis的數據類型更豐富:string,list,set,hash,sorted set,redis,支持主從同步,把更新的數據寫到磁盤

下載地址:?http://download.redis.io/releases/redis-2.8.9.tar.gz

?

?

python實現redis緩存

服務器要開啟redis,python安裝redis模塊:pip3 install redis

基本操作:

import redis aa=redis.Redis(host="10.0.0.20",port=7777) aa.set("k1","v1",ex=2) print(aa.get("k1"))

管理連接的連接池:

import redis pool=redis.ConnectionPool(host="10.0.0.20",port=7777) aa=redis.Redis(connection_pool=pool)

redis構造方法:

def __init__(self, host='localhost', port=6379,db=0, password=None, socket_timeout=None,socket_connect_timeout=None,socket_keepalive=None, socket_keepalive_options=None,connection_pool=None, unix_socket_path=None,encoding='utf-8', encoding_errors='strict',charset=None, errors=None,decode_responses=False, retry_on_timeout=False,ssl=False, ssl_keyfile=None, ssl_certfile=None,ssl_cert_reqs=None, ssl_ca_certs=None,max_connections=None): db:數據庫號 password:輸入redis設置的密碼

?

?

?

?

redis數據類型:

1,string類型

2,list

3,hash

4,set

5,sorted set

?

string

set(name, value, ex=None, px=None, nx=False, xx=False)

ex:設置此數據的超時時間

nx:如果設置為True,只有當name不存在時,set執行

xx:如果設置為True,只有當name存在時,set執行

setnx(name, value)

只有當name不存在時,set執行

setex(name, value, time)

設置數據有效期

mset(*args, **kwargs)

設置多個數據

get(name)

?

strlen(name)

獲取name的值的字節長度

incr(name, amount=1)

整數自增

incrbyfloat(name, amount=1.0)

以小數自增

decr(name, amount=1)

整數自減

?

?

aa.flushdb() aa.set("k1","v1") aa.mset({"aa":22,"vv":"22"}) print(aa.get("k1")) print(aa.mget("k1","aa")) #[b'v1', b'11'] print(aa.strlen("k1")) aa.append("","") print(aa.keys()[0].decode()) # print(aa.incr("aa")) #23 print(aa.decr("aa",amount="10")) #13 exit()

?

?

?

hash

hset(name, key, value)

name:redis的key

key:name下的一個key

value:key的value

hmset(name, mapping)

一次性創建hash

hget(name, key)

獲取name的key的value

hkeys(name)

獲取name下的所有的key

hvals(name)

取name下的所有value

hexists(name, key)

是否存在此hash

hlen(name)

查看name下的hash數

hdel(name, *keys)

刪除name下的hash,可刪除多個

?

?

aa.flushdb() aa.hset("rdi1","k1","v1") aa.hset("rdi1","k2","v2") #rdi1={"k1":"v1","k2":"v2"} aa.hmset("rdi2",{"k1":"v1","k2":"v2"}) aa.hmset("rdi3",{"k1":"v1","k2":"v2"}) print(aa.hmget("rdi2","k2","k1")) print(aa.hkeys("rdi2")) print(aa.hvals("rdi2")) print(aa.keys()) print(aa.hdel("rdi2","k1","k2")) print(aa.hkeys("rdi2"))

?

?

?

?

list

lpush(name, *values)

在左邊壓入一個或多個值

lpop(name)

從左邊彈出一個值,并從列表中刪除

lset(name, index, value)

設置已有索引的值,若指定從左邊開始的索引無值,則報錯

lrange(name, start, end)

從左邊開始,切片

lrem(name, value, num=0)

從左邊開始取指定值刪除,num指定刪除幾個,0表示所有刪除

rpoplpush(src, dst)

從一個列表的最右邊取出數放到另一個的最左邊

?

aa.flushdb() aa.lpush("k1",11,22) #k1=[22,11] aa.lpush("k1",33) #k1.lappend(33) aa.rpush("k1",11) #k1.rappend(33) aa.lrem("k1",11,num=1)print(aa.type("k1")) print(aa.llen("k1")) aa.lset("k1",2,"hello") aa.rpoplpush("k1","k2") print(aa.lpop("k2")) print(aa.lrange("k1",0,aa.llen("k1")))print(aa.lpop("k1")) print(aa.lpop("k1"))

?

?

?

Set

sadd(name, *values)

添加name下value,可以一次添加多個

scard(name)

查看name下有多少元素

sdiff(keys, *args)

取keys和*args的差集,keys - *args

sdiffstore(dest, keys, *args)

把上面得出的差集存到dest里

sinter(keys, *args)

取keys和*args的交集,keys & *args

sinterstore(dest, keys, *args)

把上面得出的并集存到dest里

sunion(keys, *args)

取keys和*args的并集,keys | *args

smembers(name)

打印name下的所有元素

spop(name)

從尾部刪除一個成員

smove(src, dst, value)

移動src下的value值到dst

?

aa.flushdb() aa.sadd("rdi1","v1","v2","v3") #rdi1={"v1","v2","v3"} aa.sadd("rdi2","v2","v5") #rdi2={"v2","v5"} print(aa.type("rdi1")) print(aa.scard("rdi1")) print(aa.sdiff("rdi1","rdi2")) #rdi1 - rdi2 aa.sdiffstore("rdi3","rdi1","rdi2") #rdi3 = rdi1 - rdi2 print(aa.sinter("rdi1","rdi2")) #rdi1 & rdi2 aa.sinterstore("rdi3","rdi1","rdi2") print(aa.sunion("rdi1","rdi2")) #rdi1 | rdi2 print(aa.smembers("rdi1")) #print(rdi1)

?

Other

keys(self, pattern='*')

列出所有鍵

type(name)

查看值的類型

flushdb()

清空當前db

flushall()

清空所有數據

dbsize()

查看此db下有多少個name

move(name, db))

將redis的某個值移動到指定的db下

randomkey()

隨機獲取一個redis的name(不刪除)

expire(name ,time)

為某個redis的某個name設置超時時間

delete(*names)

根據刪除redis中的任意數據類型

轉載于:https://www.cnblogs.com/euewrqe/p/5901999.html

總結

以上是生活随笔為你收集整理的redis和memcached缓存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。