您的位置:首页 > 数据库

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中设置一个键值对(不存在,则创建;否则,修改)
      1. key对应的hash中的key
      2. value对应的hash中的value
    • hget(name,key)
        在name对应的hash中获取根据key获取value
    • hmset(name,mapping)
        在name对应的hash中批量设置键值对
      1. name:redis的name
      2. mapping:字典,如{'k1':'v1','k2','v2'}
    • hmget(name,keys,*args)
        在name对应的hash中获取多个key的值
      1. name:redis对应的name
      2. keys:要获取key的集合,如:['k1','k2','k3']
      3. *args:要获取的key,如:k1,k2,k3
      4. print(r.hmget('test','k1','k2')) #获取多个值
    • hgetall(name)
        获取name对应hash的所有键值
    • hlen(name)
        获取name对应的hash中键值的个数
    • hkeys(name) 1.获取name对应的hash中所有的key的值
    • hvals(name)
        获取name对应的hash中所有的value的值
    • hexists(name,key)
        检查name对应的hash是否存在当 前传入的key
    • hdel(name,*keys)
        将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中的任意数据类型
    • exists(name)
        检测redis的name是否存在
    • keys(pattern='*')
        根据*?等通配符匹配获取redis的name
    • expire(name ,time)
        为某个name设置过期时间
    • rename(src, dst)
        重命名
    • move(name, db)
        将redis的某个值移动到指定的db下
    • type(name)
        获取name对应值的类型
    • flushall删除所有的key(在redis服务端使用)

    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打印帮助信息
  • 客户端pip install python-memcached
  • 优势

      天生支持集群:

      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
    • 获取命令:get/gets
    • 其他命令:delete/stats..
    • mc.set("k1","v1") # 设定键值对k1=v1
    • set_multi:设置 多个键值对,如果key不存在,则创建 ,如果key存在,则修改
    • mc.get("k1") # 获得k1的值
    • add方法 mc.add("k2","v2") # 增加一个键值对
    • set方法和add方法的区别:
      set = add + replace
    • replace方法,修改某个key的值,如果key不存在,则异常。
    • delete:在Memcached中删除指定的一个键值对;
    • delete_multi:在Memcached中删除指定的多个键值对。
    • get : 获取一个键值对;
    • get_multi:获取多个键值对。
    • append:修改指定key的值,在该值后面 追加内容;
    • prepend:修改指定key的值,在该值前面插入内容。
  • 实例操作

    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
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签:  Python