fengzi759
  1. 什么是memcached

    • 1.memcached: 之前是danga的一个项目,最早是为LiveJournal服务的,当初设计师为了加速LiveJournal访问速度而开发的,后来被很多大型项目采用。官网是www.dange.com或者是memcached.org

    • 2.Memcached是一个高性能的分布式的内存对象缓存系统,全世界有不少公司采用这个缓存项目来构建大负载的网站,来分担数据库的压力。Memcached是通过内存里维护一个统一的巨大的hash表,memcached能存储各种各样的数据,包括图像、视频、文件、以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

    • 3.哪些情况下适合使用Memcached: 存储验证码(图形验证码、短信验证码)、登录session等所有不是至关重要的数据

  2. memcached的安装

    • 1.windows:

      • 安装: memcached.exe -d installed.

      • 启动 memcached.exe -d start

    • 2.Linux(ubuntu):

      • 安装: sudo apt install memcached

      • 启动:

        • cd /usr/local/memcached/bin ./memcached -d start

    • 3.可能出现的问题:

      • 提示你没有权限,在打开cmd的时候,右键使用管理员身份运行

      • 提示缺失pthreadGC2.dll文件: 将pthreadGC2.dll文件拷贝到 windows/System32

      • 不要放在含有中文的路径下面

    • 4.启动memcached

      • -d : 这个参数是让memcached在后台运行

      • -m:指定占用多少内存,以M为单位,默认为64M

      • -p:指定占用的端口,默认端口是11211

      • -l:别的机器可以通过哪个ip地址链接到我这台服务器。如果是通过 service memcached start的方式,那么只能通过本机连接。如果想要让别的机器连接,就必须设置'-l 0.0.0.0'

      • 如果想要使用以上参数来指定一些配置信息,那么不能使用 service memcached start, 而应该使用 /usr/bin/memcached 参数的方式来运行。 比如

        • /usr/bin/memcached -u memcache -m 1024 -p 11222 start

  3. telnet操作memcached

    • telnet 登录memcached:

      • 登录的语法是 : telnet 127.0.0.1[ip地址] 11211[端口号]

    • memcached 存储数据是以键值对的方式存储

    • 1.添加数据:

      • 1.set: 在memcached中添加一个'key->value' 如果这个'key' 之前是已经存在过,那么就会替换,否则就是添加

        • 语法:

          • set key 0[是否压缩] timeout [过期时间] value_length[字符的长度]

          • value

        • 示例:

          • set username 0 60 7

          • zhiliao

      • 2.add: 给'memcached'添加键值对。如果memcached中之前已经存在了这个'key',那么就添加失败,否则就添加成功

        • 语法:

          • add username[key] 0[是否压缩] timeout [过期时间] value_length[字符的长度]

          • value

        • 示例

          • add username 0 60 7

          • xiaotuo

          • 如果username这个key之前是已经存在了那么就会提示NOT STORED

    • 2.获取数据

      • get: 从memcached中获取一个数据,根据key来获取

        • get username[key的名称]

    • 3.删除数据

      • delete: 删除'memcached'中的一个键值对。

      • 语法:

        • delete key

      • 示例:

        • delete username

      • flush_all: 删除memcached 中的所有数据. 这个命令比较简单粗暴,谨慎使用

    • 4.incr: 给‘memcached’中那些数字类型的值进行相加操作。相加的项,都必须是数字类型,否则就会报错 示例代码如下

      • set age 0 120 2

      • 18

      • STORED

      • incr age 2

      • 20

      • get age

      • 20

    • 5.decr:给‘memcached’中那些数字类型的值进行相减操作。相减的项,都必须是数字类型,否则也会报错 示例代码如下

      • set age 0 120 2

      • 18

      • STORED

      • decr age 2

      • 16

      • get age

      • 16

    • 6.查看memcached的当前状态:

      • 语法: stats 一些有意义的参数如下:

        • get_hists: get命令命中了多少次

        • get_misses: get命令get空了几次

        • curr_items: 当前memcached中的键值对的个数

        • total_connections: 从memcached开启到现在总共的连接数

        • curr_connections: 当前memcached的连接数

        • memcached默认最大的连接数是1024

  4. 通过Python操作memcached

    • 1.安装:python-memcached: pip install python-memcached
      
      2.建立连接
      
      import memcache
      
      在连接之前,一定要切记先启动memcached
      
      mc = memcache.Client(['127.0.0.1:11211' , '192.168.174.130:11211'],debug=True)
      
      3.设置数据:
      
      mc.set('username','hello world',time=60*5) 一次只能设置一个值
      
      mc.set_multi({'email':'xxx@qq.com','telphone':'1111'},time =60*5) 一个可以设置多个值
      
      4.获取数据
      
      mc.get('telphone')
      
      5.删除数据:
      
      mc.delete('email')
      
      6.自增长:
      
      mc.incr("read_count",delta = 10) 默认是增加1 指定delta = 100,就在原基础上增加10
      
      7.自减少
      
      mc.decr("read_count")
  5. memcached的安全性

    • memcached的操作不需要任何用户名和密码,只需要知道'memcached 的服务器的ip地址和端口号即可'。因此memcached使用的时候尤其要注意他的安全性。这里提供两种安全的解决方案。分别来进行详解

      • 1.使用‘-l’参数设置为只有本地可以连接: 这种方式,就只能通过本机才能连接,别的机器都不能访问,可以达到最好的安全性

      • 2.使用防火墙,关闭'11211'端口。外面也不能访问

        • ufw enable #开启防火墙

        • ufw disable #关闭防火墙

        • ufw default deny #防火墙以禁止的方式打开,默认是关闭那些没有开启的端口

        • ufw deny 端口号 #关闭某个端口

        • ufw allow端口号 #开启某个端口

分类:

技术点:

相关文章:

  • 2021-10-29
  • 2021-05-15
猜你喜欢
  • 2018-03-07
相关资源
相似解决方案