python redis、 memcached

xiaoxiao2021-02-28  43

一.redis 中hash操作

Redis在内存中存储hash类型是以name对应一个字典形式存储的。
1.hset(name,key,value) 、hmset(name,mapping) 设置值
(1)hset(name,key,value) #name对应的hash中设置一个键值对(不存在,则创建;否则,修改) #参数:     #name:redis的name     #key:key1对应的hash中的key     #value:对应的hash中的value (2)hmset(name,mapping) #在name对应的hash中批量设置键值对 #参数:      #name:redis的name      #mapping:字典,如{'k1':'v1','k2','v2'}

#导入模块import redis #创建连接 r = redis.Redis(host="192.168.1.100") #设置单个值 r.hset("hash","k1","v1")#批量设置键值对 r.hmset("redis",dict(ip="192.168.1.1",port="1000")) #或者 r.hmset("redis",{"ip":"192.168.1.1","port":"1000"})
2.hgetall(name)、hget(name,key)、hmget(name,keys,*args) 获取key的值
(1) hgetall(name) # 获取key的详细内容  

import redis r = redis.Redis(host="192.168.1.100") r.hmset("redis",dict(ip="192.168.1.1",port="1000")) print(r.hgetall("redis")) #获取redis的所有的详细信息 结果为:{b'ip': b'192.168.1.1', b'port': b'1000'} (2)hget(name,key) #单个获取

#在name对应的hash中获取key的value

print(r.hget("redis","ip")) #查看redis中IP的values

(3)hmget(name,keys,*args) #多个获取

#在name对应的hash中获取多个key的值#参数:    #name:redis对应的name    #keys:要获取key的集合,如:['k1','k2','k3']

    #*args:要获取的key,如:k1,k2,k3

print(r.hmget("redis","ip","port")) #获取redis中IP与port的values
3.hlen(name):获取name对应的hash中键值的个数

print(r.hlen("redis"))

4.hkeys(name):获取name对应的hash中所有的key的值
print(r.hkeys("redis"))
5.hvals(name):获取name对应的hash中所有的value的值
print(r.hvals("redis"))6.hexists(name,key):检查name对应的hash是否存在传入的key
print(r.hexists("redis","ip"))7.hdel(name,*keys):将name对应的hash中指定key的键值对删除 r.hdel("redis1","a")

二.其他常用的操作,适用于所有类型

1.delete(*names) #根据name删除redis中的任意数据类型
r.delete("redis")
2.exists(name) #检测redis的name是否存在
r.exists("redis")3.keys(pattern='*') #根据* ?等通配符匹配获取redis的name print(r.keys()) 获取所有的key print(r.keys(pattern="*")) #获取所有的key
4.expire(name ,time) # 为某个name设置过期时间
print(r.expire("redis2",10)) #设置redis2的生存时间为10秒
5.rename(src, dst) # 重命名 
r.rename("hash","hash_now") #将hash 改名为 hash_now6.move(name, db)) 将redis的某个值移动到指定的db下
r.move("hash_now","1") #将hash_now移动到1库下7.type(name) # 获取name对应值的类型
print(r.type("redis"))8.flushall 删除所有的key

r.flushall()

三.memcache相关操作

1.安装memcached
cd /usr/local/src wget http://memcached.org/latest tar -zxvf memcached-1.x.x.tar.gz cd memcached-1.x.x ./configure && make && make test && make install 启动memcache memcached -d -m 10 -u root -l 127.0.0.1 -p 12000 -c 256 -P /export/servers/memcache/logs/memcache.pid

-p 指定端口号(默认11211) -m 指定最大使用内存大小(默认64MB)  -t 线程数(默认4)  -l 连接的IP地址, 默认是本机  -d 以后台守护进程的方式启动-c 最大同时连接数,默认是1024-P 制定memecache的pid文件-h  打印帮助信息

2.连接memcache

#导入模块import memcache #创建连接 mc = memcache.Client(["192.168.1.100:12000"])

天生支持集群:python-memcachd模块原生支持集群操作,其原理是在内存维护一个主机列表,且集群中主机的权重值和主机在列表中重复出现的次数成正比。主机    权重     1.1.1.1   1     1.1.1.2   2     1.1.1.3   1 #那么在内存中主机列表为:     host_list=['1.1.1.1','1.1.1.2','1.1.1.2','1.1.1.3',]下面来看一个例子,python操作memcache集群mc = memcache.Client([('1.1.1.1:12000', 1), ('1.1.1.2:12000', 2), ('1.1.1.3:12000', 1)], debug=True)mc.set('k1', 'v1')

3.常用操作

(1)set(key,values)  、add(key,values) 添加值

mc.add("k1","v1") mc.set("f","bar")

(2)get(key) 查看key的values

print(mc.get("f"))

(3)repalce(key, new_value) 修改某个key的值,如果key不存在,则异常

mc.replace("k1","v2")

(4)set_multi:设置多个键值对,如果key不存在,则创建,如果key存在,则修改

mc.set_multi({"k1":"v1","k2":"v1"})

(5)delete和delete_multi方法delete:在Memcached中删除指定的一个键值对;delete_multi:在Memcached中删除指定的多个键值对。

mc.delete("k1") mc.delete_multi(["k1","k2"])

(6)get和get_multi方法get : 获取一个键值对;get_multi:获取多个键值对。

mc.get("k1") mc.get_multi(["k1","k2"])

(7)append和prepend方法append:修改指定key的值,在该值后面追加内容;prepend:修改指定key的值,在该值前面插入内容。

(8)stats 查看历史操作

转载请注明原文地址: https://www.6miu.com/read-2627780.html

最新回复(0)