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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256325.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256325.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256325.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# —— 進程與線程的理解

定義 進程 進程(Process)是Windows系統中的一個基本概念,它包含著一個運行程序所需要的資源。一個正在運行的應用程序在操作系統中被視為一個進程,進程可以包括一個或多個線程。 程序是在特定操作系統上的可執行文件&#xff0c…

git安裝和初步使用

基本參照以下鏈接: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000 注意: (1)每臺電腦對于github來說都有對應的ssh密鑰,…

【TensorFlow】——broadcast_to(在不復制內存的情況下自動擴張tensor)

目錄 作用: 內在的思路 優點 什么時候可以broadcast ? tf.boradcast_to .VS tf.tile 作用: 在不會實際意義上復制數據的情況下進行tensor的維度和形狀的擴張,使得兩個tensor維度和形狀一致 對兩個維度不一致的tensor進行加減前進行br…

20145212 《信息安全系統設計基礎》第2周學習總結

20145212 《信息安全系統設計基礎》第2周學習總結 教材學習內容總結 Vim基本操作 1.使用vim命令進入vim界面vim后面加上你要打開的已存在的文件名或者不存在(則作為新建文件)的文件名。 打開Xfce終端,輸入以下命令$ vim practice_1.txt 直接使…

Opencv—— 擬合直線

概念 最小二乘法是勒讓德( A. M. Legendre)于1805年在其著作《計算慧星軌道的新方法》中提出的。 最小二乘法就是通過最小化誤差的平方和,使得擬合對象無限接近目標對象。在圖像處理中主要用于擬合線,通過求采樣點距離誤差最小的線,可以是直…

本地搭建Dubbo監控中心的安裝步驟

Dubbo監控中心的安裝步驟 參考鏈接:http://blog.csdn.net/lichunan/article/details/40349645 一、從github上下載dubbo源碼進行編譯: 1、下載地址為: https://github.com/alibaba/dubbo.git2、編譯源碼命令:首先進入~/dubbo&am…

(轉)SQLServer實例講解

歡迎和大家交流技術相關問題: 郵箱: jiangxinnju163.com 博客園地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://github.com/jiangxincode 知乎地址: https://www.zhihu.com/people/jiangxinnju 實例就是一個在數據庫中存在的,現實的數據…

Basler相機SDK相關問題收集與知識匯總

1.心跳時間導致報錯 此心跳非彼心跳,相機心跳是指過通過設置一個時間用于監測相機和網卡的連接,如果超過這個時間,相機就會釋放跟網卡的連接,進入一種允許相機被再次連接的狀態。 但此方式會導致相機SDK報錯,經常顯示在使用中,無可用連接,如何解決? 1.干等。不可取 2.…

14-會場安排問題

會場安排問題 時間限制:3000 ms | 內存限制:65535 KB難度:4描述學校的小禮堂每天都會有許多活動,有時間這些活動的計劃時間會發生沖突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,…

【TensorFlow】——實現minist數據集分類的前向傳播(常規神經網絡非卷積神經網絡)

目錄 一、常規神經網絡模型 二、TensorFlow實現前向傳播步驟 1、讀取數據集 2、batch劃分 3、根據神經網絡每一層的神經元個數來初始化參數w,b 4、進行每一層輸入輸出的計算 5、對每一層的輸出進行非線性relu函數變換 6、計算一個batch訓練后的誤差loss 7、計算每一次…

大道至簡第二章

懶人造就了方法 開頭說的,有一個人叫李冰也要移山,可是他卻要用和愚公截然不同的方法,那就是用“燒”的方法來碎石,那么這樣的好處就是省力。那么他又是怎樣想到的辦法的呢,就是生活中仔細觀察他老婆做飯時水溢出是石頭…

C# 回調函數詳解

回調和回調函數是什么 軟件模塊之間存在著接口,而回調是一種雙向調用模式,被調用方在接口被調用時也會調用對方的接口。 對于一般的結構化語言,可以通過回調函數來實現回調。回調函數是一個函數或過程,是一個由調用方自己實現&am…

神經網絡(11)--具體實現:unrolling parameters

我們需要將parameters從矩陣unrolling到向量,這樣我們就可以使用adanced optimization routines. unroll into vectors costFunction與fminunc里面的theta都是n1維的向量,costFunction的返回值gradient也是n1維的向量。 但是當我們使用神經網絡時&#x…

[轉]ASP.Net篇之Session與Cookie

本文轉自:http://www.cnblogs.com/japanbbq/archive/2011/08/31/2160494.html Session: Session是“會話”的意思,然而,因為http協議是無狀態的,那么每次客戶端請求服務器端,服務器端都會以“嶄新”的頁面展示給客戶端…

C# 接口詳解

概念 接口描述的是可屬于任何類或結構的一組相關行為,所以實現接口的類或結構必須實現接口定義中指定的接口成員。 定義:使用interface 關鍵字,由方法、屬性、事件、索引器或這四種成員類型的任意組合構成。另可使用new、public、protected、…

js學習之地圖生成

首先,上地圖圖片 接著,js,我們可以把圖片看成一塊塊32*32像素的 var i; var j;window.onload function () {gamemap(15, 10, 10, "map.jpg"); }var mapimg new Image(); var map [[18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,…

linux性能分析常用的命令

1,uptime 查看系統負責2,more 分頁查看文件,enter顯示下一行,空格顯示下一頁,F顯示下一屏,B顯示上一屏內容。3,top命令查看系統情況,按shif H可以查看當前線程的負載。4&#xff0…

C#中Console.ReadKey()與ConsoleKey的一些用法

1.控制臺程序不讓窗口閃過 對于控制臺程序,Console.ReadKey()可以使窗口停留一下,直到點擊鍵盤任一鍵為止。 2.通過按鍵進行選擇 key Console.ReadKey(true).Key;if (key ConsoleKey.S){ Console.Write("Input the message:…

【TensorFlow】——Windows10、pycharm、Python3.6.4中安裝CPU和GPU兩種版本的TensorFlow

tensorflow分為兩種,一種是cpu版本,一種是gpu版本 CPU版本可以直接通過pip進行安裝: 這里是在國內鏡像源中進行的下載,下載的版本是2.2.0版本 pip --default-timeout1000 install tensorflow-cpu2.2.0 -i http://pypi.douban.c…