redis
文章平均质量分 85
error0318
这个作者很懒,什么都没留下…
展开
-
Redis如何处理过期数据 和 内存不够用怎么办?
为什么处理过期数据? 如果一直不处理,那么Redis占用内存会一直增加,损耗服务器性能处理方法 惰性删除 :当访问键值时,再检查当前的数据是否过期,如果过期则执行删除并返回 null,如果没有过期则正常 返回值信息给客户端 优点:不需要对过期数据进行额外处理 缺点:删除过期不及时,会造成一定空间浪费 定期删除 : Redis会周期醒的随机测试一批设置了过期时间的键值, 测试到已过期的key将被删除...原创 2020-10-23 17:29:00 · 550 阅读 · 0 评论 -
Redis中的hashtable底层数据结构
SDS(简单动态字符串类型)文件源码:sds.hstruct __attribute__ ((__packed__)) sdshdr5 { unsigned char flags; /* 3 lsb of type, and 5 msb of string length */ // 类型 char buf[]; // 实际存储数据};struct __attribute__ ((__packed__)) sdshdr8 { uint8_t len; /.原创 2020-10-23 09:35:50 · 1587 阅读 · 0 评论 -
Redis处理实际问题
现在系统有千万级的活跃用户,如何实现日活跃量统计?为了增强用户粘性,上线一个连续打卡,发放积分的功能,怎么实现连续打卡用户统计原创 2020-10-21 21:41:56 · 116 阅读 · 0 评论 -
Redis持久化
什么是持久化? 持久化就是将数据从容易丢失的内存同步到能够永久存储的设备上的过程Redis为何需要持久化? 由于 Redis做中间缓存,将数据存储在内存中容易丢失(服务器异常宕机,停电,redis服务异常停止)。造成数据丢失。如果将数据备份保存在磁盘上,那么可以快速将数据恢复到redis中Redis的两种持久化方法: 1.RDB(Redis Database)持久化 RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子...原创 2020-10-06 21:01:26 · 189 阅读 · 0 评论 -
Redis优化
Pipeline:(管道,通道) redis执行一次命令需要 1次网络时间 + 1次命令时间执行 n 次命令需要 n次网络时间 + n 次命令时间由于命令时间非常短,影响时间开销的主要是网络时间,所以我们可以把一组命令打包,然后一次发送过去1 次 pipeline(n条命令) = 1 次网络时间 + n 次命令时间可以看出pipeline可以大大减少网络时间注意事项: 1.不能携带大量信息,容易对网络及客户端造成很大影响,使效果适得其反 2.pi...原创 2020-10-06 19:30:25 · 173 阅读 · 0 评论 -
Redis之有序集合
sorted set 类型1.zadd :添加2.zscore: 查看某个值的分数3.zrange : key start end withscores 按照分数排序原创 2020-10-06 18:06:35 · 254 阅读 · 0 评论 -
Redis之集合类型
set操作命令【无序,不重复】1.sadd:set中加入元素2.srem:set中删除指定元素3.scard :查看set集合长度4.sismember: 查看指定元素是否存在5.smembers : 查看某个集合的所有元素6.spop:随机推出一个元素集合间操作1.sdiff 差集2.sinter 并集3.sunion 交集...原创 2020-10-06 17:54:10 · 250 阅读 · 0 评论 -
Redis之列表类型
list操作命令(可以往list中添加相同元素)1.lpush: 往list最左边添加元素2.rpush:往list最右边添加元素3.lpop:推出最左边的元素4.rpop:推出最右边元素5.llen:查看list长度6.linsert key before value newValue: 在list指定的值前插入newValue7.linsert key after value newValue: 在list指定的值后插入newValue...原创 2020-10-06 17:47:14 · 141 阅读 · 0 评论 -
Redis之哈希类型
哈希类型类似一个对象 key相当于对象 field相当于属性 value相当于值操作hash命令1.hget key field: 获取hash key对应的field的value 2.hset key field value :设置hash key对应的field的value3.hdel key field: 删除hash key对应的field的value4.hgetall key : 获取key的所有 field5.hexists key fiel...原创 2020-10-06 17:35:03 · 221 阅读 · 0 评论 -
Redis之字符串类型
Redis字符串的数据结构字符串的实现代码在sds.c和sds.h文件中。SDS:简单动态字符串在Redis之前的版本中,是如下存储字符串的/* * 类型别名,用于指向 sdshdr 的 buf 属性 */typedef char *sds;/* * 保存字符串对象的结构 */struct sdshdr { int len; // buf 中已占用空间的长度 int free; // buf 中剩余可用空间的长度 c原创 2020-10-06 16:08:30 · 225 阅读 · 0 评论 -
redis五种数据类型简介
redis的五种数据类型1.string (string类型包含整型,浮点型,字符串类型)set命令:设置键值get命令:获取某个键的值incr: 对整型自增1decr: 对整型自减1incrby : 对整型做加法decrby:对整型做减法2.list类型(可以往list中添加相同元素)lpush: 往list最左边添加元素rpush:往list最右边添加元素lpop:推出最左边的元素rpop:推出最右边元素llen:查看list长度3.se.原创 2020-09-28 22:32:47 · 231 阅读 · 0 评论 -
Redis的底层原理和单线程架构
redis(C语言实现)底层为hash map 1.非关系型的键值对数据库,可以根据键以O(1)的时间复杂度取出或插入关联值 2.Redis的数据是存在内存中的 3.键值对中键的类型可以是字符串,整型,浮点型等,且键是唯一的 4.键值对中的值类型可以使string,hash,list,set,sorted set等 5.Redis内置了复制,磁盘持久化,LUA脚本,事务,SSL,ACLs,客户端代理等功能 6.通过Redis哨兵和自动分区提供高可用性...原创 2020-09-23 18:01:09 · 350 阅读 · 0 评论 -
redis的缓存雪崩,穿透和击穿
缓存雪崩: 大量redis数据缓存在一瞬间(由于设置了过期时间)全部失效,导致所有请求全部直接请求数据库,造成数据库压力太大而雪崩,无法再对外提供服务。 解决方案: 1.设置缓存的失效时间,随机初始化失效时间,不会让所有的redis缓存在同一时间失效。 2.对于集群分布的redis,将热点的key设置在不同的redis节点上 3.设置定时任务,在缓存失效前请求数据库的数据。缓存穿透: 由于数据库主键从0开始,没有负数。...原创 2020-09-17 20:24:53 · 101 阅读 · 0 评论 -
Linux(centos7)安装redis
1.获取安装包wget http://download.redis.io/releases/redis-4.0.6.tar.gz2.解压压缩包tar -zxvf redis-4.0.6.tar.gz3.安装依赖yum install gcc4.跳转到redis目录cd redis-4.0.65.编译make MALLOC=libc6.安装cd src && make prefix=/usr/local/redis install(如原创 2020-07-22 19:18:22 · 225 阅读 · 0 评论 -
redis基础命令
1.设置密码在redis.conf中找到requirepass 取消注释,改成密码就行然后重启redis服务2.登录auth password原创 2020-07-22 19:27:20 · 115 阅读 · 0 评论