mysql中UUID产生的数据,用什么数据类型存储?
因为还没有写入MySQL,所以你在把数据写入Redis时,需要设计一个key来唯一标识一条数据.
MySQL表中应该设置一个唯一字段用于存储这个key.
这个key可以是一个由程序即时生成的随机唯一值,比如可以取Linux提供的uuid:
/proc/sys/kernel/random/uuid
取到后用sadd添加到Redis的
集合(元素唯一)
里.添加成功,表示集合中没有这个uuid,在集合里是唯一的.
然后再把这个uuid用lpush添加到Redis的
列表(元素有序)
里.lpush入队后,当列表的长度大于等于N(自定义数值)时,Redis用lrange取出列表里的元素并
批量写入
到MySQL,写入成功后用ltrim删掉列表中已经处理的元素.优化就体现在:原来的即时写入转变为批量写入.
风险是:Redis意外崩溃有可能丢数据.
比如你的Redis配置了 appendfsync everysec
那就有丢失前1秒数据的风险.
怎么扩充vbox虚拟机linux磁盘空间?
1.扩展VBOX中的硬盘分配大小; 2.在虚拟Linux中增加并挂载新分区. 如何取得vdi文件的UUID: 查看虚拟机文件: <虚拟机名.vbox> 找到行:<HardDisk uuid="{d07126c5-4b89-4eb7-89c7-725bbb92d0b0}" location="CentOSVirtualHardDisk.vdi" format="VDI" type="Normal"/> 新建一个VDI, 把旧的VDI(UUID)复制到新VDI(文件名)上: >VBoxManage clonevdi d07126c5-4b89-4eb7-89c7-725bbb92d0b0 ./CentOSHardDisk.vdi --existing 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone hard disk created in format 'VDI'. UUID: b0f6e6e5-ca11-4ede-9fc3-7b236bd7
Ubuntu新内核开机endkernelpanic-notsyncing:VFS:Unabletomountrootfsonunknown-block(0,0)?
首先,说明一下LFS kernel panic -not syncing :VFS:Unable to mount root fs on Unknown-block(0,0)出现的几个可能原因:
1./etc/fstab文件配置错误,此配置文件是记录硬盘分区的文件,配置错了,当然就有可能出现Unable to mount root fs啦~~~解决这问题的办法就是找一张LIVECD启动了系统,然后修改此文件内容,很简单的,只要用文本编辑器打开了这文件,然后认真研究一下就明白该怎样做,如果出现要uuid之类的东东,那就到/dev/disk/by-uuid/目录下找,只要使得各挂载点与分区对应即可。
2.menu.lst。/boot/grub/menu.lst 此文件出错也是有可能的。当出现这错误的时候,不妨先看看此文件配置是否正确。诸如sda与hda的问题,sda不行,就试下hda呗~~~
3.initrd没有启动。内核载入内存后,某些系统会执行initrd文件的,如果没有启动,就会出现本文要解决的那问题。当然LFS是没有做initrd文件的,所以忽略此问题。如果您的出错原因在这,那你就用LIVECD启动了,然后到/boot/目录下,看看有没有initrd相似的文件,有的话,在menu.lst文件的启动项中加入initrd (hdx,y)/boot/initrd 这样就能解决了~~~
4.内核编译的时候没有添加相应的硬件模块~~~这问题不好说,因为编译一个内核真的太不简单了~~~哈哈~~~有个必定能编译成功的办法,就是,假如你使用的某个版本的linux,把/proc/config.gz文件复制出来,解压,然后重命名为.config(注意前面有个点哦~~~)。复制到将要编译的内核源文件中,然后直接make,当然,如果你要在内核中增加其他模块的话,就先make menuconfig。当然,选项只能是只增不减罗~~~哈哈~~~(说明一下,这方法我没测试过,但是按道理来说是可以的,至少同一版本的内核是肯定成功的,除非不同版本之间的.config文件格式不一样了~~~)