• 【飞天奔月出品】memcached四大注意事项(key长度,空格限制,最大item)


    1.   key值最大长度?

    memcached的key的最大长度是250个字符

    注意250是memcached服务器端内部的限制(可以修改)

    如果您使用的客户端支持"key的前缀"或类似特性,那么key(前缀+原始key)的最大长度是可以超过250个字符的。

    我们推荐使用使用较短的key,因为可以节省内存和带宽。

    key只要不重复就行,如果太大浪费内存。

    2.key 不能有空格和控制字符

    the key must not include control characters or whitespace.

    1. item的过期时间限制?

    过期时间最大30

    如果不注意这个细节,过期时间设置大于了30天,值会设置不进缓存

    1. 最大能存储多大的单个item?

    1MB

    如果你的数据大于1MB,可以考虑在客户端压缩或拆分到多个key中。 

    代码支持:

    如果你使用spy

    net.spy.memcached.util.StringUtils.validateKey(String)

    这个方法 用来验证 key

    其中代码:

    Java代码  
    1. public static void validateKey(String key) {  
    2.   byte[] keyBytes = KeyUtil.getKeyBytes(key);  
    3.   if (keyBytes.length > MemcachedClientIF.MAX_KEY_LENGTH) {  
    4.     throw new IllegalArgumentException("Key is too long (maxlen = "  
    5.         + MemcachedClientIF.MAX_KEY_LENGTH + ")");  
    6.   }  
    7.   if (keyBytes.length == 0) {  
    8.     throw new IllegalArgumentException(  
    9.         "Key must contain at least one character.");  
    10.   }  
    11.   // Validate the key  
    12.   for (byte b : keyBytes) {  
    13.     if (b == ' ' || b == ' ' || b == ' ' || b == 0) {  
    14.       throw new IllegalArgumentException(  
    15.           "Key contains invalid characters:  ``" + key + "''");  
    16.     }  
    17.   }  
    18. }  

    可以看到,最大长度 250,不允许长度为0的key,

    如果其中有空格 这样的控制符号 也是不允许的

  • 相关阅读:
    生成全局id的方式
    如何使得搜索的信息更准确?
    水平分区
    大表如何优化?
    MySQL_fetch_array和MySQL_fetch_object的区别是什么?
    BLOB和TEXT区别
    如何在Unix和MySQL时间戳之间进行转换?
    用ActionSupport实现验证
    服务器端验证--验证框架验证required.
    自定义类型转换器converter
  • 原文地址:https://www.cnblogs.com/wnlja/p/4681064.html
Copyright © 2020-2023  润新知