memcached increment只能增加整数值吗

memcached increment只能增加整数值吗,第1张

alter table table_name auto_increment=n

注意n只能大于已有的auto_increment的整数值,小于的值无效.

show table status like table_name可以看到auto_increment这一列是表现有的值.

步进值没法改变.只能通过下面提到last_inset_id()函数变通使用

在使用AUTO_INCREMENT时,应注意以下几点:

AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。

设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍。

AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复。

AUTO_INCREMENT数据列必须具备NOT NULL属性。

AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号是127,如加上UNSIGNED,则最大为255。一旦达到上限,AUTO_INCREMENT就会失效。

在不用AUTO_INCREMENT的情况下生成序列,可利用带参数的LAST_INSERT_ID()函数。如果用一个带参数的LAST_INSERT_ID(expr)去插入或修改一个数据列,紧接着又调用不带参数的LAST_INSERT_ID()函数,则第二次函数调用返回的就是expr的值。下面演示该方法的具体 *** 作:

先创建一个只有一个数据行的数据表:

create table seq_table (id int unsigned not null)

insert into seq_table values (0)

接着用以下 *** 作检索出序列号:

update seq_table set seq = LAST_INSERT_ID( seq + 1 )

select LAST_INSERT_ID()

通过修改seq+1中的常数值,可生成不同步长的序列,如seq+10可生成步长为10的序列。

该方法可用于计数器,在数据表中插入多行以记录不同的计数值。再配合LAST_INSERT_ID()函数的返回值生成不同内容的计数值。这种方法的优点是不用事务或LOCK,UNLOCK表就可生成唯一的序列编号。不会影响其它客户程序的正常表 *** 作。

配置修改:如果不懂代码的话,不要伸手,后果自负。

负载状态:memcached运行中的相关状态。其中最重要的是hit这个参数,也就是命中率。当然是越高越好了。

性能调整:前面IP和端口不要改。缓存大小根据实际情况调整。根据什么来调整呢?回到负载状态栏,有一个“当前已使用内存”,看这个数字来调整。比如默认分配给memcached一共64M内存,但是已使用内存62M就说明memcached可用内存快要满了,这时候就手动改大一点,比如128M。具体数字根据每天流量情况来定。

Memcached的目的就是把所有文章内容都扔进内存,这样用户来访时直接读取内存中的内容,跳过了数据库,所以使用memcached后网站打开感觉特别快。比如网站每天发几十篇文章,可能这个数字就调整大一点,防止不够用了

至于设置一个UNIX时间戳或 以秒为单位的整数(从当前算起的时间差)来说明此数据的过期时间,但是在后一种设置方式中,不能超过 2592000秒(30天)的问题我们该怎么办呢?我们不想设置为永久有效,但是也不想再限制在30天内。那么方法来了,这里就以官方文档的代码为示例代码,如下。

<?php

$memcache_obj = memcache_connect("localhost", 11211)

/* 面向过程编程 API */

memcache_add($memcache_obj, 'var_key', 'test variable', false, 0)// 永久有效

/* 面向对象编程 API */

$memcache_obj->add('var_key', 'test variable', false, time()+24*60*60*30)// 超过30天

?>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11298715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存