NoSQL下
2018-05-06 15:59
246 查看
ECharts5.0版本即将上线,来说说我与ECharts的那些事吧!>>>
-
set操作
Set是不重复的list - sadd(name,values)
- r.sadd("set_name","aa","bb")
- smembers(name)
-
获取name对应的集合的所有成员
- scard(name)
-
获取name对应的集合中的元素个数
- sismember(name,value)
-
检查value是否是name对应的集合内的元素
- spop(name)
-
从集合的右侧移除一个元素 ,并将其返回
- srem(name, value)
-
删除集合中的某个元素r.srem("set_name", "aa")
- sunion(keys,*args)
-
获取多个name对应的集合的并集r.sunion("set_name","set_name1","set_name2")
- sinter(set1,set2) 交集
- 实例
>>> import redis >>> r = redis.Redis(host="10.148.60.61",port=6379,db=0) >>> r.sadd("set1",1,2,3,4,5) # 增加一个集合 5 >>> r.smembers("set1") # 显示集合所有元素 {b'3', b'2', b'1', b'4', b'5'} >>> r.scard("set1") # 显示集合元素的个数 5 >>> r.sismember("set1",6) # 判断元素6是不是在集合set1内,返回True或False False >>> r.sismember("set1",5) True >>> r.spop("set1") # 从右边删除第一个元素 b'5' >>> r.srem("set1",1) # 删除指定元素 1 >>> r.sadd("set2",4,5,6,7,2) # 创建集合set2 5 >>> r.sunion("set1","set2") # 显示set1和set2的合集 {b'3', b'2', b'6', b'7', b'4', b'5'} >>> r.sinter("set1","set2") # 显示set1和set2的交集 {b'2', b'4'}
hash操作
Redis在内存中存储hash类型是以name对应一个字典形式存储的
-
hset(name,key,value)
-
name对应的hash中设置一个键值对(不存在,则创建;否则,修改)
-
在name对应的hash中获取根据key获取value
-
在name对应的hash中批量设置键值对
-
在name对应的hash中获取多个key的值
-
获取name对应hash的所有键值
-
获取name对应的hash中键值的个数
-
获取name对应的hash中所有的value的值
-
检查name对应的hash是否存在当 前传入的key
-
将name对应的hash中指定key的键值对删除
>>> r.hset("testHash","key1","value1") 1 >>> r.hget("testHash","key1") b'value1' >>> r.hmset("hash1",{"k1":"v1","k2":"v2","k3":"v3"}) True >>> r.hmget("hash1","k1","k2") [b'v1', b'v2'] >>> r.hgetall("hash1") {b'k1': b'v1', b'k2': b'v2', b'k3': b'v3'} >>> r.hlen("hash1") 3 >>> r.hkeys("hash1") [b'k1', b'k2', b'k3'] >>> r.hvals("hash1") [b'v1', b'v2', b'v3'] >>> r.hexists("hash1","v3") False >>> r.hexists("hash1","k3") True >>> r.hdel("hash1","k3") 1 >>> r.hexists("hash1","k3") False
其它操作
-
delete(*names)
-
根据name删除redis中的任意数据类型
-
检测redis的name是否存在
-
根据*?等通配符匹配获取redis的name
-
为某个name设置过期时间
-
重命名
-
将redis的某个值移动到指定的db下
-
获取name对应值的类型
python操作memcached
- 服务端安装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
- 启动memcachememcached -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指定memcached的pid文件,-h打印帮助信息
天生支持集群:
python-memcachd模块原生支持集群操作,其原理是在内存维护一个主机列表,且集群中主机的权重值和主机在列表中重复出现的次数成正比。
主机和权重
主机 | 权重 |
---|---|
1.1.1.1 | 1 |
1.1.1.2 | 2 |
1.1.1.3 | 3 |
那么在内存中主机列表为: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')
Memcache常用操作:
-
存储命令:set/add/replace/append/prepend/cas
set = add + replace
实例操作
import memcache mc = memcache.Client(['192.168.42.133:12000'],debug=True) mc.add("k1","v1") print(mc.get('k1')) mc.set("k1","v0") # 如果k1存在就修改其值,不存在就创建k1 print(mc.get('k1')) mc.replace("k1","v1") # 修改k1的值,如果不存在就抛出异常错误 print(mc.get('k1')) dict1 = {"a":1,"b":2,"c":3} mc.set_multi(dict1) # set_multi的参数是一个字典,可以提前设定好 print(mc.get_multi(["a","b"])) # get_multi的参数是一个list mc.append("a","2") # a的值本来是1,如果append了一个2后,就成了12 print(mc.get("a")) mc.prepend("a","3") # 在a的值前面插入3 print(mc.get("a"))
输出结果:
v1 v0 v1 {'a': 1, 'b': 2} 12 312
相关文章推荐
- NoSQL数据库探讨之一 - 为什么要用非关系数据库?
- NoSQL架构实践(一)——以NoSQL为辅
- 面向对象数据库和NoSQL
- NoSQL真的能终结关系数据库?
- NoSQL数据库笔谈
- NoSQL理论之-内存是新的硬盘,硬盘是新的磁带
- Oracle发布MySQL 5.6版本 向NoSQL靠拢
- NoSQL 数据库 简介
- NoSQL数据库:MongoDB初探
- NoSQL数据库全方位对比
- MySQL下的NoSQL解决方案HandlerSocket
- NoSQL生态系统
- 几个重量级的NoSQL数据库和管理工具(转)
- Oracle 发布 NoSQL 数据库
- NoSQL
- 关系数据库还是NoSQL数据库
- MySQL与NoSQL——SQL与NoSQL的融合
- 常见NoSQL系统使用场景分析
- NoSQL 数据库简介
- 专访NoSQLFan站长:NoSQL未来发展将细分