zoukankan      html  css  js  c++  java
  • Redis 搭建与配置

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

    Redis 下载

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

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

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

    Redis & Memcached 数据缓存对比

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

    Redis 使用场景

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

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

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

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

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

    Redis 搭建

    下载源码包

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

    安装依赖

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

    解压源码包

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

    编译安装

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

    启动 Redis

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

    连接 Redis

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

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

    关闭 Redis

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

    Redis 配置

    Redis 配置文件

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

    指定配置文件启动

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

    Redis 使用

    基础操作

    # 连接 redis
    [root@redis redis]# redis-cli 
    127.0.0.1:6379>
    
    # 查看所有数据
    127.0.0.1:6379> keys *
    (empty list or set)
    	
    # 查看时注意不要轻易使用,如想查看数据,先查看数据量 DBSIZE
    127.0.0.1:6379> DBSIZE
    (integer) 2018041
    
    # 切换库(Redis 中默认16个库)
    127.0.0.1:6379> SELECT 1
    OK
    127.0.0.1:6379[1]> SELECT 2
    OK
    127.0.0.1:6379[2]> SELECT 3
    OK
    127.0.0.1:6379> SELECT 16
    (error) ERR invalid DB index
    
    # =============   增删查改数据   ============= #
    # 添加数据
    127.0.0.1:6379> set k1 v1
    OK
    
    # 查看数据
    127.0.0.1:6379> keys *
    1) "k1"
    127.0.0.1:6379> get k1
    "v1"
    
    # 删除数据
    127.0.0.1:6379> keys *
    1) "k1"
    127.0.0.1:6379> DEL k1
    (integer) 1
    127.0.0.1:6379> keys *
    (empty list or set)
    # 修改数据(直接覆盖)
    127.0.0.1:6379> set k1 v1
    OK
    127.0.0.1:6379> set k1 v11111
    OK
    127.0.0.1:6379> get k1
    "v11111"
    
    # 追加数据
    127.0.0.1:6379> APPEND k1 000000
    (integer) 12
    127.0.0.1:6379> get k1
    "v11111000000"
    

    通用操作

    # 判断 Key 是否存在(EXISTS)
    127.0.0.1:6379> EXISTS k1
    (integer) 1						# 存在则返回 1
    127.0.0.1:6379> EXISTS k2
    (integer) 0						# 不存在则返回 0
    
    
    # 修改 Key 名字(RENAME)
    127.0.0.1:6379> KEYS *
    1) "k1"
    127.0.0.1:6379> RENAME k1 k100
    OK
    127.0.0.1:6379> KEYS *
    1) "k100"
    
    
    # 查看数据类型(TYPE)
    127.0.0.1:6379> TYPE k100
    string
    
    
    # 设置生存时间(EXPIRE)
    # 以秒为单位
    127.0.0.1:6379> EXPIRE zzz 100
    (integer) 1
    
    
    # 以毫秒为单位(PEXPIRE)
    127.0.0.1:6379> PEXPIRE k100 10000
    (integer) 1
    
    
    # 查看生存时间(TTL)
    127.0.0.1:6379> TTL k100
    (integer) 1					# 正整数生存时间倒计时
    127.0.0.1:6379> TTL k100
    (integer) -1				# -1代表没有设置生存时间
    127.0.0.1:6379> TTL k100
    (integer) -2				# 代表设置过生存时间已删除,已过期
    
    
    # 取消生存时间设置(PERSIST)
    127.0.0.1:6379> TTL zzz
    (integer) 93
    127.0.0.1:6379> PERSIST zzz
    (integer) 1
    127.0.0.1:6379> TTL zzz
    (integer) -1
    

    密码设置

    # 配置文件配置密码
    [root@redis redis]# vim redis.conf 
    requirepass 123
    
    # 使用密码连接
    [root@redis redis]# redis-cli -a 123
    
    # 登陆后输入密码
    [root@redis redis]# redis-cli
    127.0.0.1:6379> AUTH 123
    OK
    127.0.0.1:6379> DBSIZE
    (integer) 2018041
    
    # 连接 Redis Server 后获取密码
    127.0.0.1:6379> CONFIG GET requirepass
    1) "requirepass"
    2) "123"
    # 连接 Redis Server 后修改密码(临时,重启后失效)
    127.0.0.1:6379> CONFIG set requirepass 234
    OK
    [root@redis redis]# redis-cli
    127.0.0.1:6379> DBSIZE
    (error) NOAUTH Authentication required.
    127.0.0.1:6379> auth 123
    (error) ERR invalid password
    127.0.0.1:6379> auth 234
    OK
    
    # 连接 Redis Server 后修改密码,并写入配置文件中(永久,重启仍然有效)
    127.0.0.1:6379> CONFIG SET requirepass 12345
    OK
    127.0.0.1:6379> CONFIG REWRITE
    OK
    127.0.0.1:6379> shutdown
    OK
    [root@redis redis]# redis-server /service/redis/6379/redis.conf
    [root@redis redis]# redis-cli
    127.0.0.1:6379> DBSIZE
    (error) NOAUTH Authentication required.
    127.0.0.1:6379> auth 234
    (error) ERR invalid password
    127.0.0.1:6379> auth 12345
    OK
    
  • 相关阅读:
    ASP设计常见问题及解答精要
    网页脚本加密解密
    有关表格边框的css样式表语法说明
    彻底搞定 Grub
    三千年来振奋过中国人的29句口号(是中国人就看看!)
    在Unix/Linux上令(java)JVM支持中文输出
    windows xp 下eclipse3.0.2+eclipseme+j2me wireless tooltik开发环境的配置
    在网页上显示公式
    Oracle认证考试详细介绍
    算法和数据结构排序快速排序
  • 原文地址:https://www.cnblogs.com/zzzwqh/p/13427118.html
Copyright © 2011-2022 走看看