redis 常规的知识点整理—将持续更新…
1.redis 不仅仅做缓存使用,某种场景下可以当做数据库使用,替换 mysql,因为 Redis 是可以持久化的,所以可以直接和 disk 进行交互;而 memcached 则不能当数据库使用,只能作缓存使用,不能替换 mysql。
2.仅从缓存这个角度来说,memcached 要比 redis 好很多,因为它的性能更高(如果想了解,就自行找资料了解其优秀特性,比如在多核处理器上,memcached 效率很高,而 redis 是单进程的,相对效率低一点),memcached 比 redis 少的是功能,从功能齐全的方面来说,当然 redis 要更强点。所以在选择的时候视具体情况来定。
3.本地启动 reids 实例的时候,连接上 redis 实例之后,如果想要关闭 redis,那么请记住不要暴力关闭,比如 kill -9 或者直接关闭窗口的方式去关闭 redis 服务。因为 redis 是做数据服务的,如果暴力关闭,可能会导致 redis 丢失数据。
4.Redis 的实际处理速度完全依靠主进程的执行效率。假如同时有多个客户端并发访问服务器,则服务器处理能力在一定情况下将会下降。假如我们要提高服务器的并发能力,那么可以采用在单台服务器上部署多个 redis 进程的方式。(注意: 这种方式表面上是提高了并发能力,但是实际上隐藏着一些问题,这些 redis 进程会竞争 cpu 资源的,如果在 redis 里面执行了一些阻塞性的或者很耗 cpu 的操作的时候,那么此实例就会抢占 cpu 资源比较多,导致其它 redis 实例的访问能力都会降低。因此: 这种方式使用的时候一定要注意,不要有一些对 cpu 资源抢占比较厉害的命令或操作,如果有的话,还是建议一台机器上安装一个 redis 实例,保险一点)
5.redis 是单进程的,所以不用担心并发问题。所以可以利用 redis 的 incr 自增特性生成流水号。
6.redis 的调优就需要对 redis 的配置有清晰的认识,通过各种参数来调优。但是请注意:使用 config 命令,在测试环境进行调优的话还是很方便的,但是在生产环境最好还是不要去使用这个命令,因为一般都是在测试环境调好参数过后,这个参数就固定了,放在配置文件中,在把这些固定的参数放到生产环境的一个过程。假如随便的修改了生产环境的参数之后,用着挺好用,但是并没有记录本次操作,别人也不知道,别人看 redis 的配置只会到配置文件中看,但其实这个配置已经和配置文件的有区别了,这时候别人再来调试就很麻烦了。所以一般都是用在测试环境进行调试。
7.redis 的持久化,在实际生产环境中,会优先选中开启 AOF 机制,但是在 reids master 上面都会运行主进程,会关掉 RDB 和 AOF ,一般就是在 slave 上开启 AOF 持久化方式,然后关掉 RDB 方式,因为把它开着也会影响性能的。如果 redis 是 master->slave->slave 这种链式模式,那么我们可以在 slave 上一个开 AOF,一个开 RDB 也可以,也是保证数据安全的一种方式。不过一般都优先选择 AOF 这种方式。