一.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 查看历史操作