logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

redis 内存碎片清理

内存碎片指在内存分配使用过程中,产生的不能被重复利用的内存空间。以下图为例,内存空间还有3K,应用程序想申请3K连续空间,虽然总量够,但是仍然会申请失败。对于这种无法利用的空间,称之为内存碎片内存碎片形成原因1.内存分配策略引发:redis默认使用jemalloc分配器分配内存。jemalloc每次分配2*N固定空间,例如写入数据申请10K空间,jemalloc会为其分配16K空间。这样分配优点是

文章图片
#redis
redis原子操作(单命令与lua脚本)

原子操作是指执行过程不需要加锁并且保证多个操作是原子性的,使用原子操作可以保证并发时数据准确性,降低对系统性能的影响。比如记录投票数分为3步,先读取原投票数,然后将原投票数加1,最后写回redis。如果不使用原子操作并发情况下会造成投票丢失等问题。加锁的话会降低系统性能,而且加锁就不多说了,只能说做的多错的多,能不加锁就不加锁。redis提供以下两种原子操作方法。单命令操作由于redis使用单线程

文章图片
#redis#lua
redis集群中hash tag 使用

hash tag用于redis集群中。其实现方式为在key中加个{},例如test{1}。使用hash tag后客户端在计算key的crc16时,只计算{}中数据。如果没使用hash tag,客户端会对整个key进行crc16计算。下面演示下hash tag使用。127.0.0.1:6380> cluster keyslot user:case(integer) 9491127.0.0.1:

文章图片
#redis#负载均衡
平均负载(load average)

一、平均负载基本概念平均负载是指单位时间内,系统处于R状态与D状态的平均进程数,与cpu使用率无关,进程状态可使用ps -aux查看。平均负载理想状态下等于cpu个数,cpu个数可通过cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 查看,例如在2个cpu的机器上,平均负载为1,那么cpu有50%的空闲,当平均负载大于cpu个数时,表

文章图片
#linux
mysql 提取字符串中数字

开发过程中经常会遇到一些提取字符串中数字做递增的需求,例如把杭上0001人调字第X号与杭上清0005人调字第X号取出数字做递增,这种没什么规律,又不好截取,如果能提取出汉字中对应的数字取最大值做递增就很方便了。提取字符串思路就是遍历字符串中每个字符,判断ascii码是否是数字,在这使用自定义函数实现创建自定义函数CREATE FUNCTION get_number (param varchar(5

文章图片
#mysql
暂无文章信息