• memcache 随笔


    第一次用可能有很多不足的地方  以后慢慢改进。

    memcache  是一个简单的键/值对    是通过键和值储存信息到memcache中 ,通过特定的键请求来返回信息。

    信息会无限期的保留在内存中 :除非发生以下情况

    1 为缓存 分配的内存耗尽,这是memcache 会使用 LRU(最近最少使用)的方法从此 缓存删除条目 最近未曾使用的条目会此缓存中  先删除,最旧的最先访问。

    2 条目被明显删除。

    3 条目过期失效。  ---  各个条目均有一个有效的期限   一遍针对此键的信息太陈旧

    在使用 memcached 时,

    尽量从缓存加载信息

    如果存在,使用信息的被缓存版本

    如果它不存在:

      1执行一个或多个查询来从数据库加载信息

      2格式化适合于显示或进一步处理的信息

      3将信息存储到缓存内

      4使用格式化了的数据

    数据加载成为了至多三个步骤的一个过程,从缓存加载数据或从数据库(视情况而定)加载数据并存储在缓存内。

    当这个过程首次发生时,数据将正常地从数据库或其他数据源加载,然后再存储到 memcached 内。当下一次访问此信息时,它就会从 memcached 拉出,而不是从数据库加载,节省了时间和 CPU 循环。

    问题的另一个方面是要确保如果更改了要存储在 memcached 内的信息,在更新后端信息的同时还要更新 memcached 的版本。

    比如 修改了数据 :---

    更新数据库内的类别列表=----》格式化信息----》将信息存储到 memcached 内-》将信息返回至客户机;

    memcached 内的存储操作是原子的,所以信息的更新不会让客户机只获得部分数据;它们获得的或者是老版本,或者是新版本。

    填充并使用memcached

    get(key)  从储存的特定的键的memcache获得信息。  如果没有就返回错误

    set(key, value [, expiry]) — 使用缓存内的标识符键存储这个特定的值。如果键已经存在,那么它就会被更新。期满时间的单位为秒,并且如果值小于 30 天 (30*24*60*60),那么就用作相对时间,如果值大于 30 天,那么就用作绝对时间 (epoch)。

    add(key, value [, expiry]) — 如果键不存在就将这个键添加到缓存内,如果键已经存在就返回错误。如果您想要显式地添加一个新键而又不会因它已经存在而更新它,那么这个函数将十分有用。

    replace(key, value [, expiry]) — 更新此特定键的值,如果键不存在就返回一个错误。

    delete(key [, time]) — 从缓存中删除此键/值对。如果您提供一个时间,那么添加具有此键的一个新值就会被阻塞这个特定的时期。超时让您可以确保此值总是可以重新读取自您的数据中心。

    incr(key [, value]) — 为特定的键增 1 或特定的值。只适用于数值。

    decr(key [, value]) — 为特定的键减 1 或特定的值,只适用于数值。

    flush_all — 让缓存内的所有当前条目无效(或到期失效)

    安全性:

    为了确保最佳性能,memcached 并未提供任何形式的安全性,没有身份验证,也没有加密。这意味着对 memcached 服务器的访问应该这么处理:一是通过将它们放到应用程序部署环境相同的私有侧,二是如果安全性是必须的,那么就使用 UNIX® socket 并只允许当前主机上的应用程序访问此 memcached 服务器。

  • 相关阅读:
    hmailserver
    用数据库管理SERV-U的用户时,如何修改密码及原理
    一个jquery的图片下拉列表 ddSlick
    图片下拉列表
    mvc 用户控件 ascx 获取 View 页面的值
    asp.net mvc 通过修改路由规则来实现页面的URL多参数传递
    tips
    让ie6/7/8兼容css3的圆角阴影等特殊效果的方法 PIE1.0.0及placeholder在这些IE下生效的方法
    IE8下ckeditor无法正常使用,提示"例外被抛出且未被接住"的解决办法
    iis6 下发布MVC2项目的方法
  • 原文地址:https://www.cnblogs.com/yhl664123701/p/4289453.html
Copyright © 2020-2023  润新知