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.mzph.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…