zoukankan      html  css  js  c++  java
  • python---memcache使用操作

    import memcache
    
    mc = memcache.Client(['127.0.0.1:8081'],debug=True)
    
    mc.set("key","val")
    
    ret = mc.get("key")
    
    print(ret)

    set:

    mc.set("key","val")

    add:

    #mc.add("key",'val')已存在则不允许添加
    #MemCached: while expecting 'STORED', got unexpected response 'NOT_STORED'

    replace:

    mc.replace("key","valr")
    #不存在则不允许修改

    上面的add,和replace不常使用,因为set完全可以替换,更加灵活,set()可以创建,可以修改

    set_multi使用:

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

    delete和delete_multi

    mc.delete("k1")
    mc.delete_multi("key1","key")

    get和get_multi

    ret = mc.get("k1")#返回结果
    ret = mc.get_multi(["k1","k2"])#返回结果集

    append和prepend,在设置的键后面的值上进行修改

    mc.set("k1","v1")  #k1  == > v1
    
    mc.append("k1","after") #k1   == >v1after
    
    mc.prepend("k1","before") #k1 ==>beforev1after

    decr和incr:

    decr自减一,incr自加一(在未设置步长时),针对所存值都为int类型的数据

    mc.set("key","1")
    mc.set("key",1)
    #上面两种都可以
    mc.incr("key")
    ret = mc.get("key")
    print(ret)  #结果为2
    
    mc.decr('key')
    print(ret)  #结果为1

    mc.incr("key",2)#自增2
    mc.decr("key",2)#自减2

    gets和cas:防止有脏数据,类似加锁(实际是在内部维护了一个计数器),使数据保持正确,谁先获取这个数据,只有当他处理完成后,其他人,才可以再去获取,不允许同时获取数据,不然报错,所以可以通过这个try修改顺序

    使用:

    进程一:

    import memcache
    
    mc = memcache.Client(['127.0.0.1:8081'],debug=True,cache_cas=True)
    
    mc  = memcache.Client(['127.0.0.1:8081'],debug=True,cache_cas=True)
    
    r = mc.gets('c1')
    print(r)
    input(">>>")
    mc.cas('c1',99)
    r = mc.get('c1')
    print(r)

    进程二:

    import memcache
    
    mc  = memcache.Client(['127.0.0.1:8081'],debug=True,cache_cas=True)
    
    r = mc.gets('c1')
    print(r)
    input(">>>")
    mc.cas('c1',99)
    r = mc.get('c1')
    print(r)

    当1执行后堵塞,再执行2(本质上每次执行gets时,会从memcache中获取一个自增的数字),获取数据输出后,两个都堵塞

    执行2,(通过cas去修改gets的值时,会携带之前获取的自增值和memcache中的自增值进行比较,如果相等,则可以提交)

    再去执行1,cas数据是其自增值和内存不一致(由于2已经修改过),则报错

    MemCached: while expecting 'STORED', got unexpected response 'EXISTS'

    memcache和Redis比较:https://www.oschina.net/news/26691/memcached-timeout

  • 相关阅读:
    Oracle的分区打点
    学习Struts2经验总结
    优化MVC,实现数据库表的记录的添加、删除、修改、查询。
    基于struts研究传值问题
    基于“MVC”框架集设计模式,开发用户管理系统!
    使用Struts,实现简单的登录
    QT学习4:使用窗口部件
    QT学习9:绘制函数
    QT学习8:准备战斗
    QT学习6:组装丰富的积木!
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8604996.html
Copyright © 2011-2022 走看看