Redis的安装及基本使用1.Redis2.Redis安装3.redis常见配置4.redis数据操作5.redis发布订阅6.主从双备

1.Redis

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。
  • 官方文档
  • 中文文档

2.Redis安装

1.windows安装

下载官方文件之后,安装即可。 在命令窗口输入命令

redis-cli

启动成功

  • 设置远程访问

找到redis的配置文件

注释bind 127.0.0.1即可实现远程连接访问

2.linux安装

  • 下载安装包解压,解压完毕在文件夹内打开命令窗口
#输入命令
make

#完毕之后在当前窗口输入新的命令
sudo make install
  • 设置redis在后台运行

把daemonize 改为yes即可实现在后台运行

  • 启动和关闭redis服务
#启动redis服务
./redis-server redis.conf 

#查看redis服务进程 是否启动成功
ps -ef | grep redis
ps -A | grep redis

#redis客户端启动
redis-cli

#关闭redis服务
ps -A | grep redis

3.redis常见配置

  • 配置文件redis.conf

  • 常见配置项
    • bind 127.0.0.1 [绑定ip地址,远程访问请注释]
    • port 6379 [默认访问地址 6379]
    • daemonize yes [是否以后台进程<守护进程>运行]
    • dbfilename dump.rdb [存储数据的文件]
    • dir ./. [存储数据的文件所在路径]
  • redis中的数据类型

  • redis的数据存储:key=value 键值对
  • key<键>的数据类型:字符串
  • value<值的类型>:
    • string字符串
    • hash哈希
    • list列表
    • set集合
    • zset有序集合

4.redis数据操作

  • string:字符串操作

set key value :给一个key赋值value setex key seconds value:给一个key设置值value,过期时间seconds mset key value [key value]:设置多个键值对 get key:根据key获取一个值 mget key [key]:根据多个key获取多个值 incr key :将key对应的值+1 incrby key increment:将key对应的值+increment decr key:将key对应的值-1 decrby key increment:将key对应的值-increment append key value:将value的值拼接到x后面 strlen key:获取key对应的值的长度

  • key操作

keys pattern:查找键,支持正则 exists key:查找键是否存在,存在返回1,否则返回0 type key:查看键对应的值的类型 del key:根据key删除键值对 expire key seconds:给key设置过期时间 ttl key:查看键的有效时间(显示结果为-2 的话表示过期,-1表示永不过期)

  • hash:用于存储对象,对象的格式为键值对

hset key field value:设置单个属性 hmset key field value [field value]:设置多个属性 hget key field :获取key对应的值 hmget key field [field]:获取多个key对应的value值 hgetall key:获取所有属性和值 hkeys key:获取所有的属性 hlen key:获取包含属性的个数 hvals key:获取所有的值 hexists key field:判断属性是否存在 hdel key field [field]:根据属性名称删除属性及值 hstrlen key field:返回值的字符串长度

  • list列表:有序存储多个数据

lpush key value [value]:列表头部增加多个数据 rpush key value [value]:列表尾部增加多个数据 linsert key before | after privot value:在一个元素钱/后插入数据 lset key index value:设置指定索引的元素的值 lpop key:删除并且获取key对应的list第一个元素 rpop key:删除并且获取key对应的list最后一个元素 lrange key start stop:返回存在在key的list中指定范围的数据 llen key:获取列表的长度 lindex key index:获取列表中索引对应的元素 ltrim key start stop:获取列表中start~stop组成的新的列表

  • set集合:无序存储多个数据

sadd key value [value]:添加多个数据到key集合中 smembers key:获取key集合中所有的数据 sismember key value:判断value是否在key集合中存在 scard key:获取key集合中元素的个数 sinter key [key]:获取多个集合 交集 sdiff key [key]:获取多个集合的差集 sunion key [key]:获取多个集合的并集

  • zset集合:有序存储多个数据

  • sorted set,有序集合
  • 元素为string类型
  • 元素具有唯一性,不重复
  • 每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序
  • 元素的score可以相同

zadd key score value [ score value]:添加多个带权重的数据到key集合中 zrange key start stop:获取指定范围中所有的元素 zcard key:返回元素的个数 zcount key min max :返回score值在min和max之间的数据 zscore key member:返回集合中member元素的score值

5.redis发布订阅

  • 发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅
  • 订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的
  • 发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑
  • 客户端发到频道的消息,将会被推送到所有订阅此频道的客户端
  • 客户端不需要主动去获取消息,只需要订阅频道,这个频道的内容就会被推送过来
  • 消息的格式

推送消息的格式包含三部分

  • part1:消息类型,包含三种类型
    • subscribe,表示订阅成功
    • unsubscribe,表示取消订阅成功
    • message,表示其它终端发布消息
  • 如果第一部分的值为subscribe,则第二部分是频道,第三部分是现在订阅的频道的数量
  • 如果第一部分的值为unsubscribe,则第二部分是频道,第三部分是现在订阅的频道的数量,如果为0则表示当前没有订阅任何频道,当在Pub/Sub以外状态,客户端可以发出任何redis命令
  • 如果第一部分的值为message,则第二部分是来源频道的名称,第三部分是消息的内容
 subscribe 频道名称 [频道名称]:订阅多个频道

 unsubscribe  频道名称 [频道名称]:取消多个频道的订阅

 publish 频道 消息:向指定的频道推送消息

打开多个命令窗口:

  • 第一个窗口当做订阅者

输入命令: #启动redis redis-cli #选择数据库 select 0 #订阅频道 subscribe zhiji

  • 第二个窗口当做客户端

输入命令 #启动redis redis-cli #选择数据库 select 1 #发布消息 publish zhiji 'hellow'

效果如图所示

6.主从双备

  • 主从配置 一个master可以拥有多个slave,一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构 比如,将ip为192.168.1.10的机器作为主服务器,将ip为192.168.1.11的机器作为从服务器
  • 设置主服务器的配置 bind 192.168.1.10 设置从服务器的配置 注意:在slaveof后面写主机ip,再写端口,而且端口必须写
通过redis.**.conf配置完成主从双备

bind配置主数据库服务器

slaveof配置从数据库服务器

bind 192.168.1.11 slaveof 192.168.1.10 6379 在master和slave分别执行info命令,查看输出信息
在master上写数据
set hello world 在slave上读数据
get hello

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猿人谷

内存泄露

1.简介       在计算机科学中,内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理...

2288
来自专栏性能与架构

console.log() 之外的调试技巧

console.log( ) 是JS开发时常用的小工具,输出一些信息来辅助调试,console 还有很多有用的方法,下面介绍几个方便调试的用法 跟踪堆栈 例如想...

3739
来自专栏西枫里博客

thinkPHP5模版页面volist循环offset不能使用变量

有这样一个应用场景:当volist循环需要排除前面几个数据的时候,我们通常使用offset来操作。而假设前面要排除的数据是根据当前页面占位符来确定的,而需要排除...

892
来自专栏java 成神之路

vmstat 命令详解

4167
来自专栏锦小年的博客

python学习笔记5.2-包和模块的导入

在理解什么是包以及什么是模块之后,就要学会如何去导入包或者模块了,本文主要介绍如何导入包以及在导入包的过程中需要注意一些什么。导入包的核心是使用关键词impor...

2056
来自专栏我的博客

awk第二课

使用方法:awk ‘{pattern + action}’ {filenames} 尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在...

35510
来自专栏开源优测

RobotFramework怎么写好用例

github地址:https://github.com/robotframework/HowToWriteGoodTestCases/blob/master/H...

972
来自专栏一“技”之长

iOS代码运行的磨刀石-预编译指令 原

所谓预编译,就是程序代码在编译之前,开发工具为我们预先做的一些工作。不要小瞧这些指令,没有它们,我们的代码可能寸步难行。

1002
来自专栏张善友的专栏

深入浅出事件流处理NEsper(三)

首先介绍一下NESPER的大体结构,NEsper从内容上分为两块,NEsper的核心NEsper.dll和NEsper.IO.dll。 (1)NEsper的核...

22610
来自专栏MoeLove

[译]Tornado异步非阻塞I/O

Tornado 4.3于2015年11月6日发布,该版本正式支持Python3.5的async/await关键字,并且用旧版本CPython编译Tornado同...

1212

扫码关注云+社区

领取腾讯云代金券