邯郸网站建设哪家强,做网站前端后台,网站备案帐号是什么情况,电商网站建设模板为什么使用Redis缓存数据库
我们日常的开发#xff0c;无非是对数据的处理。程序的定义也可以这样狭义的解释#xff1a;算法数据。可见数据库是多么重要的工具。但是关系型数据库的读写能力在200-1000次/秒不等#xff0c;服务器好点可能更多#xff0c;这导致在高并发的…为什么使用Redis缓存数据库
我们日常的开发无非是对数据的处理。程序的定义也可以这样狭义的解释算法数据。可见数据库是多么重要的工具。但是关系型数据库的读写能力在200-1000次/秒不等服务器好点可能更多这导致在高并发的情况下我们需要访问的数据可能会被锁住使得响应速度变得异常的慢体验很差。同时如果数据很多我们在做一些比较重的筛选查询时可能会非常的慢。
什么是Redis
上述的问题无非是因为磁盘的读写过低那么有没有办法将将数据库放进内存呐。所以就有了RedisRedis是一款nosql的数据库也是一种键值对数据库。相比传统的关系型数据库跑在内存里的Redis无疑是非常快速的读写数据也达到了30万次/秒这无非是巨大的提升。同时Redis提供了持久化的支持数据会同时写进磁盘使得Redis可以完全代替关系型数据库。
官方定义redis是一个key-value存储系统。和Memcached类似它支持存储的value类型相对更多包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash哈希类型。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作而且这些操作都是原子性的。在此基础上redis支持各种不同方式的排序。与memcached一样为了保证效率数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件并且在此基础上实现了master-slave(主从)同步。 如何持久化
https://blog.csdn.net/qq_39569480/article/details/125603603
内存管理
redis是个基于内存的缓存数据库既然是基于内存的那肯定就会有存满的时候虽然可以限制redis使用内存的大小但如果真的存满了再有新的数据过来肯定就存不进去了此时redis会执行既定的一些淘汰策略下面一块看一下设置redis占用内存大小和redis几种种淘汰策略。
1.首先来看一下设置Redis最大占用内存
这里我使用的是win版redis找到安装目录下的redis.windows.conf文件(保存文件退出重启redis服务)设置maxmemory参数maxmemory是bytes字节类型注意转换。修改如下所示 默认是没有限制内存大小的也就是无限制。
获取当前设置内存占用大小
config get maxmemory设置最大内存限制
config set maxmemory 2GB设置maxmemory参数maxmemory是bytes字节类型注意转换。 这里我设置了2G214789585byte 设置好以上参数后那么当redis占用内存达到2G时 就无法继续写入新的数据了这时需要淘汰掉一些内存数据。那么接下来继续往下看。
redis内存淘汰机制
当Redis的内存使用达到设置的maxmemory上限时Redis会根据所配置的eviction policy淘汰策略来决定如何处理新的写入操作。以下是几种常见的淘汰策略
1.noeviction默认当内存使用达到上限时新的写入操作会被禁止客户端会收到错误信息。
2.allkeys-lru当内存使用达到上限时Redis会尝试淘汰最近最少使用的键Key以便为新的写入操作腾出空间。
3.allkeys-random当内存使用达到上限时Redis会随机选择一些键进行淘汰以便为新的写入操作腾出空间。
4.volatile-lru当内存使用达到上限时Redis会尝试淘汰设置了过期时间的键中最近最少使用的键Key以便为新的写入操作腾出空间。
5.volatile-random当内存使用达到上限时Redis会随机选择一些设置了过期时间的键进行淘汰以便为新的写入操作腾出空间。
获取当前内存淘汰策略 config get maxmemory-policy命令方式修改
config set maxmemory-policy allkeys-lru //通过命令修改淘汰策略配置文件直接添加(保存文件退出重启redis服务)
查看当前内存占用情况
当我们想查看当前内存占用了多少时可使用redis.cli客户端查看 首先通过auth pwd通过验证 然后使用info memory查看内存占用的详细信息
used_memory和used_memory_human代表当前内存占用大小
used_memory_peak和used_memory_peak_human表示使用内存最大时的占用量
当然也可以直接使用 info 查看更详细的信息