redis基础

163 阅读4分钟

redis 介绍

  • 分布式

redis支持主从的模式。原则:Master会将数据同步到slave,而slave不会将数据同步到master。Slave启动时会连接master来同步数据。 这是一个典型的分布式读写分离模型。我们可以利用master来插入数据,slave提供检索服务。这样可以有效减少单个机器的并发访问数量。

redis 安装

wget  http://download.redis.io/releases/redis-4.0.2.tar.gz
tar -zxf redis.tar.gz -C /opt/moduels/redis
cd  /opt/moduels/redis/src/
make install 
编辑redis.conf文件, 更改以下内容
daemonize on改为daemonize yes【目的:redis-server可以后台运行】
requirepass 612501【更改redis密码】
将bind 127.0.0.1改为0.0.0.0

如果报错:

解决方法

 cd  /opt/moduels/redis/src/
 make MALLOC=libc

数据类型

  • 字符串 String
    在以上实例中我们使用了 SET 和 GET 命令,键为 runoobkey。
  • 哈希 Hash

  • 列表 List

Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

  • 集合 Set

  • 有序集合 Zset

介绍

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

Redis Zrange 返回有序集中,指定区间内的成员。 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。 你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推

redis 命令 和配置

  • redis-cli -a 612501 -h 127.0.0.1 -p 6380

    进入redis

  • redis-cli

    进入redis客户端

  • auth <密码>

    进入redis服务器

  • info

    查看redis服务器信息

  • redis-server 启动,法一:redis-server

    最简启动(采用默认配置文件启动)

  • redis-server 启动,法二:redis-server configPath

    配置文件启动 (将需要配置的参数写入文件)

  • redis-server 启动,法三:redis-server --port 6379

  • vi redis.conf:requirepass <密码>

    修改 redis密码

Redis 发布订阅

  • Redis 客户端可以订阅任意数量的频道。 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
  • 当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:

  • 发布/订阅命令 发布/订阅命令

      PSUBSCRIBE pattern [pattern ...] 
      订阅一个或多个符合给定模式的频道。
      PUBSUB subcommand [argument [argument ...]] 
      查看订阅与发布系统状态。
      PUBLISH channel message 
      将信息发送到指定的频道。
      PUNSUBSCRIBE [pattern [pattern ...]] 
      退订所有给定模式的频道。
      SUBSCRIBE channel [channel ...] 
      订阅给定的一个或多个频道的信息。
      UNSUBSCRIBE [channel [channel ...]] 
      指退订给定的频道。
    

Redis 集群 集群搭建

  • 遇到的问题

    1. gem install redis时,出现:redis requires Ruby version >= 2.2.2

    解决方法 参考链接

      安装RVM
      gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
      curl -L get.rvm.io | bash -s stable
      find / -name rvm -print
      source /usr/local/rvm/scripts/rvm
      查看rvm库中已知的ruby版本
      rvm list known
      安装一个ruby版本
      rvm install 2.3.3
      使用一个ruby版本
      rvm use 2.3.3
      设置默认版本
      rvm use 2.3.3 --default
      卸载一个已知版本
      rvm remove 2.0.0
      查看ruby版本:
      ruby --version
      安装redis:
      gem install redis
    
    1. Could not connect to Redis at 127.0.0.1:6379: Connection refused

       解决方法:redis-cli -a 612501 -h 127.0.0.1 -p 6380
      
    2. curl: (35) SSL connect error

       原因:无法在服务器使用curl命令访问https域名,原因是nss版本有点旧了
       解决方法:yum -y update nss
      

redis持久化

  • 持久化含义 持久化是将程序数据在持久状态和瞬时状态间转换的机制。对于程序来说,程序运行中数据是在内存的,如果没有及时同步写入到磁盘,那么一旦断电或者程序突然奔溃,数据就会丢失了,只有把数据及时同步到磁盘,数据才能永久保存,不会因为宕机影像数据的有效性。而持久化就是将数据从程序同步到磁盘的一个动作过程。

redis.conf 配置文件