Redis系列(一)与同类对比,底层数据结构,阿里云简单部署

276 阅读2分钟

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和底层数据结构有关:

image.png

通过在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一下是否成功。

第五步 允许远程连接:

  1. 阿里云把安全策略防火墙设置放行。
  2. vim 配置文件.conf,protected-mode设为no,将bind 127.0.0.1注释掉。

第六步(可选) 设置访问密码,将配置文件中的#requirepass foobared改为requirepass 你的密码,重启Redis服务。在Redis命令提示符下auth 你的密码即可登录。

常用的配置优化:

  1. 将redis.conf文件中vm-enabled为no(关闭虚拟内存功能);
  2. 设置好redis.conf中的maxmemory选项,该选项是告诉Redis当使用了多少物理内存后就开始拒绝后续的写入请求,该参数能很好的保护好你的Redis不会因为使用了过多的物理内存而导致swap,最终严重影响性能甚至崩溃。