redis 介绍

发布时间 2023-10-07 15:39:34作者: 鱼丸粗面没鱼丸

1. redis 概览

Redis和Memcached是非关系型数据库也称为NoSQL数据库,MySQL、Mariadb、SQL Server、PostgreSQL、
Oracle 数据库属于关系型数据(RDBMS, Relational Database Management System)

Redis(Remote Dictionary Server)在2009年发布,开发者Salvatore Sanfilippo是意大利开发者,他本想为自己的
公司开发一个用于替换MySQL的产品Redis,但是没有想到他把Redis开源后大受欢迎,短短几年,Redis就有了很
大的用户群体,目前国内外使用的公司有GitHub、新浪微博、 知乎网等
redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value database),是一个
非关系型数据库,redis提供将内存通过网络远程共享的一种服务,提供类似功能的还有memcached,但相比
memcached,redis还提供了易扩展、高性能、具备数据持久性等功能。

2. redis对比memcached

  • 支持数据的持久化:可以将内存中的数据保持在磁盘中,重启redis服务或者服务器之后可以从备份文件中恢复数据到内存继续使用。
  • 支持更多的数据类型:支持string(字符串)、hash(哈希数据)、list(列表)、set(集合)、zet(有序集合)
  • 支持数据的备份:可以实现类似于数据的master-slave模式的数据备份,另外也支持使用快照+AOF。
  • 支持更大的value数据:memcache单个key value最大只支持1MB,而redis最大支持512MB。
  • Redis 是单线程,而memcache是多线程,所以单机情况下没有memcache并发高,但redis 支持分布式集群以实现更高的并发,单Redis实例可以实现数万并发。
  • 支持集群横向扩展:基于redis cluster的横向扩展,可以实现分布式集群,大幅提升性能和数据安全性。
  • 都是基于C语言开发

3. redis 应用场景

  • Session 共享:常见于web集群中的Tomcat或者PHP中多web服务器session共享
  • 消息队列:ELK的日志缓存、部分业务的订阅发布系统
  • 计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景
  • 缓存:数据查询、电商网站商品信息、新闻内容
  • 微博/微信社交场合:共同好友、点赞评论等
4.  安装redis 
  通过yum、二进制源码包进行安装部署
# systemctl 启动redis 如下
 cat  /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target

 

5. redis 常用命令
ping #检查redis 联通性 
info #输出redis 配置信息
/apps/redis/bin/redis-cli -h IP/HOSTNAME -p PORT -a PASSWORD #使用客户端连接redis
6. 编译安装后的命令
 ll /apps/redis/bin/
total 32772
-rwxr-xr-x 1 root root 4366792 Feb 16 21:12 redis-benchmark #redis性能测试工具
-rwxr-xr-x 1 root root 8125184 Feb 16 21:12 redis-check-aof #AOF文件检查工具
-rwxr-xr-x 1 root root 8125184 Feb 16 21:12 redis-check-rdb #RDB文件检查工具
-rwxr-xr-x 1 root root 4807856 Feb 16 21:12 redis-cli       #客户端工具
lrwxrwxrwx 1 root root      12 Feb 16 21:12 redis-sentinel -> redis-server #哨兵,软连
接到server
-rwxr-xr-x 1 root root 8125184 Feb 16 21:12 redis-server #redis 服务启动命令
 7 . redis  常用配置
bind 0.0.0.0 #监听地址,可以用空格隔开后多个监听IP
protected-mode yes #redis3.2 之后加入的新特性,在没有设置bind IP和密码的时候,redis只允许访问 127.0.0.1:6379,可以远程连接,但当访问将提示警告信息并拒绝远程访问
port 6379 #监听端口
tcp-backlog 511 #三次握手的时候server端收到client ack确认号之后的队列值,即全队列长度 timeout 0 #客户端和Redis服务端的连接超时时间,默认是0,表示永不超时
tcp-keepalive 300 #tcp 会话保持时间300s
daemonize no #默认redis-server不作为守护进程运行的,而前台运行,如果想在后台运行,就把它改成 yes,当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件
supervised no #和OS相关参数,可设置通过upstart和systemd管理Redis守护进程,centos7后都使用systemd