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

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 条评论
登录 后参与评论

相关文章

  • 使用Selenium抓取QQ空间好友说说1.安装Selenium2.在Python中使用Selenium获取QQ空间好友说说3.代码实现(基于Python3)

    通过Robo 3T(数据库MongoDB的一款功能强大的数据库管理工具)可以看到我们已经将拿到的数据库存储于数据库中

    Python攻城狮
  • Python操作redis

    1 .用户登录首先判断是否在redis缓存中,如果在redis缓存中,直接登录成功; 2 .若用户未在redis缓存,则访问Mysql,判...

    Python攻城狮
  • TCP编程tcp服务器客户端服务端tcp服务端发送和接收消息客户端接受和发送消息tcp服务器使用多线程接受多个客户端服务端使用多进程接收多个客户端

    Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协...

    Python攻城狮
  • redis4.0.10安装与常用命令

    ----------- redis安装 ----------------------------------------- -- 安装reids:https:/...

    HUC思梦
  • 实例讲解redis字符串类型

    章鱼喵
  • Redis基础数据类型(string、hash、list)

    为了解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案,就是NoSql。 NoSql,叫非关系型数据库,它的全名Not only sql...

    陌无崖
  • 《Redis入门这一篇就够了》

    通过Nginx代理到某一个服务器上时,会造成在8080或者8081的Tomcat服务器上登录,Tomcat服务器会给客户端返回一个JSessionID的Cook...

  • 点赞功能设计与实现

    点赞业务本身并不复杂,无非是对数据的update,但是点赞本身是无意识行为,并且同一个用户可对博文进行点赞/取消点赞,如果直接操作数据库,无疑会增加数据库io操...

    疯狂的KK
  • MySQL中explain中的结果字段介绍(三)

    之前的文章中对于explain的数据结果中的字段已经进行了一部分介绍了,今天来说一说剩下的几个字段,为了防止忘记,先看看这个表结构:

    AsiaYe
  • 手把手教你实现一个基于 Java 的分布式锁服务

    编辑:业余草 来源:https://www.xttblog.com/?p=4994

    业余草

扫码关注云+社区

领取腾讯云代金券