Redis与Memcache,Ehcache对比
- 有持久化需求或者对数据结构和处理有高级要求的应用,选择redis,其他简单的key/value存储,选择memcache。
- Memcache适合多读少写,大数据量的情况(如人人网大量查询用户信息、好友信息、文章信息等)
- Redis适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)。
- Ehcache直接在jvm虚拟机中缓存,速度快,效率高;但是缓存共享麻烦,集群分布式应用不方便。适合单个应用或者对缓存访问要求很高的应用。
- 可以把Memcache想象成一个大的内存HashTable。可以把Redis理解为是对Memcached的拓展,是更加重量级的实现,提供了更多更强大的功能。
- 使用案例:
- Memcache:Netflix,Facebook
- Redis:新浪,淘宝,GitHub
Redis的键和值都是redisObject对象,每个对象有type(类型),encoding(编码),ptr(指向数据的指针)。其中encoding和底层数据结构有关:
通过在Redis命令行输入object encoding 键名可以查看键值采用的编码方式。
Linux系统下部署Redis缓存服务
第一步 用wget从官网下载gz压缩包,例如:
wget https://download.redis.io/releases/redis-6.2.3.tar.gz
第二步 如果是阿里云服务器,可能会缺少pkg-config软件,需要apt-get update,然后apt-get install pkg-config。解压Redis的压缩包(建议在/usr/local目录),cd到解压后的目录,make && make install
第三步(可选,谨慎,建议自定义) 执行压缩包里自带的脚本,把Redis设置成后台服务。
[root@localhost redis-6.2.3]# cd utils/
[root@localhost utils]# ./install_server.sh
第四步 执行redis-server启动服务,强烈建议显式指定配置文件。单纯修改安装目录下的redis.conf文件,启动时不显式指定,配置不生效。配置文件可以放在任意位置,启动时redis-cli带上配置文件路径即可。执行redis-cliset和get一下是否成功。
第五步 允许远程连接:
- 阿里云把安全策略防火墙设置放行。
vim 配置文件.conf,protected-mode设为no,将bind 127.0.0.1注释掉。
第六步(可选) 设置访问密码,将配置文件中的#requirepass foobared改为requirepass 你的密码,重启Redis服务。在Redis命令提示符下auth 你的密码即可登录。
常用的配置优化:
- 将redis.conf文件中vm-enabled为no(关闭虚拟内存功能);
- 设置好redis.conf中的maxmemory选项,该选项是告诉Redis当使用了多少物理内存后就开始拒绝后续的写入请求,该参数能很好的保护好你的Redis不会因为使用了过多的物理内存而导致swap,最终严重影响性能甚至崩溃。