• Flask-论坛开发-5-memcached缓存系统


    对Flask感兴趣的,可以看下这个视频教程:http://study.163.com/course/courseLearn.htm?courseId=1004091002

    ### 介绍:
    哪些情况下适合使用 memcached 呢?存储验证码(图形验证码、短信验证码),登录 session 等所有不是至关重要且被访问到的几率较大的数据。

    ### 安装(Windows):
    使用 cmd 进入到对应目录,执行 memcached.exe -d install

    ### 启用(管理员权限):
    使用 cmd 进入到对应目录,执行 memcached.exe -d start

    ### 启动时的参数:
    -d 让 memcached 在后台运行
    -m 指定最多能占用多少内存,以 M 为单位,默认 64M,超出后会新数据会替换掉最开始的数据
    -p 指定占用的端口,默认 11211
    -l 指定哪些 ip 可以连接,如(-l 0.0.0.0 代表所有机器都能连接)默认只能通过本机连接

    ### 查看是否启用:
    打开任务管理器,点击 [服务] 选项,若存在 memcached 服务则说明已经启用

    ### 可能出现的问题:
    1. 提示没有权限:打开 cmd 的时候使用管理员的身份
    2. 缺少 pthreadGC2.dll 文件:将 pthreadGC2.dll 文件拷贝到 windows/System32 目录下
    3. 不要放在含有中文字符的路径下

    ### telnet 连接 memcached 格式:telnet ip port

    ### 如何验证 telnet 已经连接上 memcached 了?
    set username myyd 0 60 3 # 创建一个数据,名字为 myyd ,0 代表是否需要压缩,存储 60 秒,其值只能包含 3 个字符
    abc # 输入 myyd 对应的值
    get username # 获取 username 对应的名字和值
    quit # 退出

    ### memcached 语法(memcached 以键值对的方式存储数据)

    登录: telnet [ip] [port]

    ## set:创建一个新的数据,格式如下:
    > set username 0 120 4 # 其中,username 是 key,MYYD 是 value,0 代表不压缩,120 代表过期时间(s),4 代表值只能是 4 个字节
    > MYYD
    ## get:获取指定数据,如:
    > get username
    ## delete:删除指定数据,如:
    > delete username
    ## flush_all:清除 memcached 中的所有数据
    ## incr:给 key 的值执行相加操作,格式如下:
    > set age 0 120 2
    > 18
    > incr age 2 # 只能对数值类型进行相加
    > get age # 会得到 20
    ## decr:给 key 的值执行相减操作,格式如下:
    > set age 0 120 2
    > 18
    > decr age 2 # 只能对数值类型进行相加
    > get age # 会得到 16
    ## stats:查看 memcached 的相关信息,最常用的是查看 get 命中率(get 时是从 memcached 中获取的概率)。但实际上还可以看其他的信息,如下:
    > stats
    > STAT get_miss 2 # get miss 次数
    > STAT get_hits 2 # get hits 次数
    > STAT curr_items 1 # 当前 memcached 中总共有多少键值对
    > 等等

    ### 使用 python 操作 memcached:
    1. 连接 memcached
    import memcache
    mc = memcache.Client(['127.0.0.1:11211'],debug=True)
    2. 设置键值对
    mc.set('username','MYYD',time=120) # 不需要设置值的长度,time 为过期时间(单位s),默认为 0,0 代表永不过期
    3. 设置多个键值对
    mc.set_multi({'username':'MYYD','age':'18'},time=120) # 设置多个键值对时,传入一个字典
    4. 获取指定数据
    username = mc.get('username')
    print(username)
    5. 删除指定数据
    mc.delete('username')
    6. 给 key 的值执行相加操作(可以应用在文章的阅读量上)
    mc.incr('age') # 默认在原来的基础上加 1
    mc.incr('age',delta=5) # 若指定了 delta 则可以自定义增长数
    7. 给 key 的值执行相减操作
    mc.decr('age') # 默认在原来的基础上减 1
    mc.decr('age',delta=5) # 若指定了 delta 则可以自定义递减数
    8. memcached 分布式存储
    所谓 memcached 分布式存储,就是启用多台服务器去存储 memcached 数据,实现 memcached 分布式存储的方式如下:
    mc = memcache.Client(['127.0.0.1:11211','192.168.110.110:11211'],debug=True) # 在连接时候传入开启了 memcached 服务的机器的 IP 地址即可
    当你 set 数据的时候,会存入不同的服务器中,达到分布式存储的功能。

  • 相关阅读:
    C++网络编程服务器select模型(参考)
    javascript中多维数组的使用
    C++ 网络编程 阻塞I/O模型并发回显服务器
    指针在javascript的使用方式
    C++网络编程之服务器编程
    C++网络编程之客户端程序
    Excel数据提取C++代码(仅供参考)
    SkipOut游戏实现代码
    C++读取Excel 精华
    MFC excel修改类
  • 原文地址:https://www.cnblogs.com/myyd/p/8877043.html
Copyright © 2020-2023  润新知