Redis 简介

Redis 是一款开源的,ANSI C 语言编写的,高级键值(Key-Value)缓存和支持永久存储 NoSQL 数据库产品,

Redis 采用内存(In-Memory)数据集(DataSet),

支持多种数据类型,

运行于大多数 POSIX 系统,如Linux、*BSD、OS X等。

Redis 就是非关系型数据库(NOSQL)的一种,存储方式是 Key:value

Redis 作用

会话保持(EXPIRE 设置过期时间)

数据缓存(放在数据库前面,Memcached,Mongodb)

消息队列(Kafka),结合 ELK

Redis 优点

  1. 1.高速读写,将所有数据存储在内存,单线程服务,使用 C 语言
  2. 2.部署简单,使用稳定
  3. 3.数据类型丰富
  4. - String 字符串类型
  5. - Hash 哈希类型
  6. - List 列表类型
  7. - Set 集合类型
  8. - Sorted set 顺序集合类型
  9. 4.支持持久化,将内存的数据写入磁盘
  10. 5.多种内存分配及回收策略
  11. 6.支持事物、锁
  12. 7.消息队列、消息订阅
  13. 8.支持高可用:哨兵模式
  14. 9.支持分布式分片集群
  15. 10.支持的客户端语言很多:JavaPHPPythonNode.jsC

Redis 下载

官方网站:https://redis.io/

下载网站:http://download.redis.io/releases/

帮助网站:http://redisdoc.com/

Redis & Memcached 数据缓存对比

  1. # Memcached:
  2. 1.优点:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash多核结构、多线程读写性能高。
  3. 2.缺点:无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨机房数据同步困难、架构扩容复杂度高
  4. # Redis:
  5. 1.优点:高性能读写、多数据类型支持、数据持久化、高可用架构、支持自定义虚拟内存、支持分布式分片集群、单线程读写性能极高
  6. 2.缺点:多线程读写较Memcached
  7. # Tair:
  8. 1.优点:高性能读写、支持三种存储引擎(ddbrdbldb)、支持高可用、支持分布式分片集群、支撑了几乎所有淘宝业务的缓存。
  9. 2.缺点:单机情况下,读写性能较其他两种产品较慢
  10. # 对比结论:
  11. 1.Memcached:多核的缓存服务,更加适合于多用户并发访问次数(访问次数较少的应用场景)。
  12. 2.Redis:单核缓存服务,在单节点情况下,更加适合少量用户,多次访问的应用场景。

Redis 使用场景

  • 会话缓存(Session Cache):将 Session 存储在 Redis 中,用 Redis 缓存会话相对于其他存储(如 Memcached)的优势是,Redis 提供了持久化 。

  • 数据缓存:将后端(MySQL)存储的持久化数据,缓存到 Redis 中,加快查询速度,降低 MySQL I/O 负荷 。

  • 排行榜 / 计数器:Redis 在内存中对数字进行递增、递减的操作十分方便,利用好集合(Set)和有序集合(Sort Set),这些操作非常简单 。

  • 社交软件:共同好友,共同爱好(通过集合实现)

  • 消息队列,结合 ELK 做日志收集(通过列表实现)

Redis 搭建

下载源码包

  1. [root@redis ~]# wget http://download.redis.io/releases/redis-3.2.12.tar.gz

安装依赖

  1. [root@redis ~]# yum install -y gcc gcc-c++

解压源码包

  1. [root@redis ~]# tar xf redis-3.2.12.tar.gz
  2. [root@redis ~]# mv redis-3.2.12 /usr/local/
  3. [root@redis ~]# ln -s /usr/local/redis-3.2.12 /usr/local/redis

编译安装

  1. [root@redis ~]# cd /usr/local/redis
  2. [root@redis redis]# make & make install

启动 Redis

  1. [root@redis redis]# ./src/redis-server &
  2. [root@redis redis]# netstat -lntp
  3. tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 11759/./src/redis-s

连接 Redis

如果编译安装步骤中,没有安装(make install),需要手动配置环境变量 。

  1. # 配置环境变量
  2. [root@redis redis]# vim /etc/profile.d/redis.sh
  3. export PATH=/usr/local/redis/src:$PATH
  4. # 客户端连接
  5. [root@redis redis]# redis-cli
  6. 127.0.0.1:6379>

关闭 Redis

  1. [root@redis redis]# redis-cli shutdown
  2. 11759:M 03 Aug 10:20:20.535 # User requested shutdown...
  3. 11759:M 03 Aug 10:20:20.535 * Saving the final RDB snapshot before exiting.
  4. 11759:M 03 Aug 10:20:20.546 * DB saved on disk
  5. 11759:M 03 Aug 10:20:20.546 # Redis is now ready to exit, bye bye...
  6. [1]+ Done ./src/redis-server
  7. [root@redis redis]# redis-cli
  8. 127.0.0.1:6379> shutdown
  9. 11851:M 03 Aug 10:20:59.580 # User requested shutdown...
  10. 11851:M 03 Aug 10:20:59.580 * Saving the final RDB snapshot before exiting.
  11. 11851:M 03 Aug 10:20:59.584 * DB saved on disk
  12. 11851:M 03 Aug 10:20:59.584 # Redis is now ready to exit, bye bye...
  13. not connected> quit
  14. [1]+ Done ./src/redis-server

Redis 配置

Redis 配置文件

  1. # 默认的配置文件
  2. [root@redis redis]# pwd
  3. /usr/local/redis
  4. [root@redis redis]# ll
  5. -rw-rw-r-- 1 root root 46695 Jun 13 2018 redis.conf
  6. # 创建 redis 配置文件目录
  7. [root@redis redis]# mkdir /service/redis/6379 -p
  8. # 编写配置文件
  9. [root@redis redis]# vim /service/redis/6379/redis.conf
  10. bind 172.16.1.51 127.0.0.1 # 监听网段地址
  11. port 6379 # 端口
  12. daemonize yes # 后台启动(守护进模式)
  13. pidfile /service/redis/6379/redis_6379.pid # 指定 pid 文件
  14. loglevel notice # 指定日志级别
  15. logfile /service/redis/6379/redis_6379.log # 指定日志文件

指定配置文件启动

  1. [root@redis redis]# redis-server /service/redis/6379/redis.conf

Redis 使用

基础操作

  1. # 连接 redis
  2. [root@redis redis]# redis-cli
  3. 127.0.0.1:6379>
  4. # 查看所有数据
  5. 127.0.0.1:6379> keys *
  6. (empty list or set)
  7. # 查看时注意不要轻易使用,如想查看数据,先查看数据量 DBSIZE
  8. 127.0.0.1:6379> DBSIZE
  9. (integer) 2018041
  10. # 切换库(Redis 中默认16个库)
  11. 127.0.0.1:6379> SELECT 1
  12. OK
  13. 127.0.0.1:6379[1]> SELECT 2
  14. OK
  15. 127.0.0.1:6379[2]> SELECT 3
  16. OK
  17. 127.0.0.1:6379> SELECT 16
  18. (error) ERR invalid DB index
  19. # ============= 增删查改数据 ============= #
  20. # 添加数据
  21. 127.0.0.1:6379> set k1 v1
  22. OK
  23. # 查看数据
  24. 127.0.0.1:6379> keys *
  25. 1) "k1"
  26. 127.0.0.1:6379> get k1
  27. "v1"
  28. # 删除数据
  29. 127.0.0.1:6379> keys *
  30. 1) "k1"
  31. 127.0.0.1:6379> DEL k1
  32. (integer) 1
  33. 127.0.0.1:6379> keys *
  34. (empty list or set)
  35. # 修改数据(直接覆盖)
  36. 127.0.0.1:6379> set k1 v1
  37. OK
  38. 127.0.0.1:6379> set k1 v11111
  39. OK
  40. 127.0.0.1:6379> get k1
  41. "v11111"
  42. # 追加数据
  43. 127.0.0.1:6379> APPEND k1 000000
  44. (integer) 12
  45. 127.0.0.1:6379> get k1
  46. "v11111000000"

通用操作

  1. # 判断 Key 是否存在(EXISTS)
  2. 127.0.0.1:6379> EXISTS k1
  3. (integer) 1 # 存在则返回 1
  4. 127.0.0.1:6379> EXISTS k2
  5. (integer) 0 # 不存在则返回 0
  6. # 修改 Key 名字(RENAME)
  7. 127.0.0.1:6379> KEYS *
  8. 1) "k1"
  9. 127.0.0.1:6379> RENAME k1 k100
  10. OK
  11. 127.0.0.1:6379> KEYS *
  12. 1) "k100"
  13. # 查看数据类型(TYPE)
  14. 127.0.0.1:6379> TYPE k100
  15. string
  16. # 设置生存时间(EXPIRE)
  17. # 以秒为单位
  18. 127.0.0.1:6379> EXPIRE zzz 100
  19. (integer) 1
  20. # 以毫秒为单位(PEXPIRE)
  21. 127.0.0.1:6379> PEXPIRE k100 10000
  22. (integer) 1
  23. # 查看生存时间(TTL)
  24. 127.0.0.1:6379> TTL k100
  25. (integer) 1 # 正整数生存时间倒计时
  26. 127.0.0.1:6379> TTL k100
  27. (integer) -1 # -1代表没有设置生存时间
  28. 127.0.0.1:6379> TTL k100
  29. (integer) -2 # 代表设置过生存时间已删除,已过期
  30. # 取消生存时间设置(PERSIST)
  31. 127.0.0.1:6379> TTL zzz
  32. (integer) 93
  33. 127.0.0.1:6379> PERSIST zzz
  34. (integer) 1
  35. 127.0.0.1:6379> TTL zzz
  36. (integer) -1

密码设置

  1. # 配置文件配置密码
  2. [root@redis redis]# vim redis.conf
  3. requirepass 123
  4. # 使用密码连接
  5. [root@redis redis]# redis-cli -a 123
  6. # 登陆后输入密码
  7. [root@redis redis]# redis-cli
  8. 127.0.0.1:6379> AUTH 123
  9. OK
  10. 127.0.0.1:6379> DBSIZE
  11. (integer) 2018041
  12. # 连接 Redis Server 后获取密码
  13. 127.0.0.1:6379> CONFIG GET requirepass
  14. 1) "requirepass"
  15. 2) "123"
  16. # 连接 Redis Server 后修改密码(临时,重启后失效)
  17. 127.0.0.1:6379> CONFIG set requirepass 234
  18. OK
  19. [root@redis redis]# redis-cli
  20. 127.0.0.1:6379> DBSIZE
  21. (error) NOAUTH Authentication required.
  22. 127.0.0.1:6379> auth 123
  23. (error) ERR invalid password
  24. 127.0.0.1:6379> auth 234
  25. OK
  26. # 连接 Redis Server 后修改密码,并写入配置文件中(永久,重启仍然有效)
  27. 127.0.0.1:6379> CONFIG SET requirepass 12345
  28. OK
  29. 127.0.0.1:6379> CONFIG REWRITE
  30. OK
  31. 127.0.0.1:6379> shutdown
  32. OK
  33. [root@redis redis]# redis-server /service/redis/6379/redis.conf
  34. [root@redis redis]# redis-cli
  35. 127.0.0.1:6379> DBSIZE
  36. (error) NOAUTH Authentication required.
  37. 127.0.0.1:6379> auth 234
  38. (error) ERR invalid password
  39. 127.0.0.1:6379> auth 12345
  40. OK

Redis 搭建与配置的更多相关文章

  1. Redis Cluster集群搭建与配置

    Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...

  2. ELK+redis搭建nginx日志分析平台

    ELK+redis搭建nginx日志分析平台发表于 2015-08-19   |   分类于 Linux/Unix   |  ELK简介ELKStack即Elasticsearch + Logstas ...

  3. 使用elk+redis搭建nginx日志分析平台

    elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态 ...

  4. ELK_elk+redis 搭建日志分析平台

    这个是最新的elk+redis搭建日志分析平台,今年时间是2015年9月11日. Elk分别为 elasticsearch,logstash, kibana 官网为:https://www.elast ...

  5. linux下利用elk+redis 搭建日志分析平台教程

    linux下利用elk+redis 搭建日志分析平台教程 http://www.alliedjeep.com/18084.htm   elk 日志分析+redis数据库可以创建一个不错的日志分析平台了 ...

  6. 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【六】【引入bootstrap前端框架】

    https://blog.csdn.net/linzhefeng89/article/details/78752658 基于springboot+bootstrap+mysql+redis搭建一套完整 ...

  7. docker Redis的主从配置

    redis是k-v型nosql数据库,支持字符串(string).列表(list).集合(set).散列(hash).有序集合(zset:形如member:score的散列集合,其中member为成员 ...

  8. Linux系统下Redis缓存安装配置

    Redis是一个高性能的key-value数据库,现时越来越多企业与应用使用Redis作为缓存服务器.楼主是一枚JAVA后端程序员,也算是半个运维工程师了.在Linux服务器上搭建Redis,怎么可以 ...

  9. Linux系统下安装Redis和Redis集群配置

    Linux系统下安装Redis和Redis集群配置 一. 下载.安装.配置环境: 1.1.>官网下载地址: https://redis.io/download (本人下载的是3.2.8版本:re ...

随机推荐

  1. 【ORA】ORA-00257 archiver error. 错误的处理方法

    今天连接数据库,结果报错,ora-00257查看 [oracle@exam oracle]$ oerr ora 00257 00257, 00000, "archiver error. Co ...

  2. kubernets之节点和网络的安全保障策略

    一  在pod中使用宿主节点的命名空间 1.1  在pod中使用宿主的网络命名空间 [root@node01 Chapter13]# cat pod-with-host-network.yml api ...

  3. top有用的开关控制命令

    [原创]本文为原创博文,转发请注明出处:https://www.cnblogs.com/dingbj/p/top_command.html 今天偶然用到top命令,在动态刷新的界面上输入h顺便看了下帮 ...

  4. Databricks 第8篇:把Azure Data Lake Storage Gen2 (ADLS Gen 2)挂载到DBFS

    DBFS使用dbutils实现存储服务的装载(mount.挂载),用户可以把Azure Data Lake Storage Gen2和Azure Blob Storage 账户装载到DBFS中.mou ...

  5. wmic 操作文件的datafile

    wmic datafile /?动词有ASSOC,CALL,CREATE,DELETE,GET,LIST 这几个 命令:wmic datafile where "filename='dsc0 ...

  6. js中常用追加元素的几种方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. Docker部署SayHello(FastAPI)

    目录 前言 服务部署 部署后端 1. 进入到sayhello目录 2. 编写API的Dockerfile(如果有请之直接构建镜像- 在下一步) 3. 构建镜像 4. 运行容器 5. 访问IP:8000 ...

  8. Centos7部署FytSoa项目至Docker——第三步:部署程序

    FytSoa项目地址:https://gitee.com/feiyit/FytSoaCms 部署完成地址:http://82.156.127.60:8000/ 我买的是一年99标准型SA2云服务器 购 ...

  9. TypeScript中的private、protected

    首先我们要清楚 private . protected 现阶段只是javascript中的保留字(Reserved words),而非关键字(Keywords ).因此TypeScript中的纯类型声 ...

  10. shell编程基础一

    1.定义变量 a=1 shell定义变量要注意等号前后不能有空格,不然会报错,请严格按照格式编写. 2.打印输出 echo 1 使用echo打印,后面留一个空格. 3.shell中通过 ${变量名} ...