(GoRails)ActionCable如何用Redis + 菜鸟redis教程
视频:
https://gorails.com/episodes/how-actioncable-uses-redis?autoplay=1
原理PubSub, 你进入一个频道,然后就能接收,和发布信息给频道中的所有人。
Redis CLI
假设已经安装redis。在terminal运行:
redis-cli
进入,后输入subscribe "chat"订阅频道:
subscribe "chat" #'chat'是你定义的频道名字
显示:
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "chat"
3) (integer) 1
在其他terminal新窗口,多开几个,同样订阅"chat"(和👆相同的步骤)
在其中一个termain退出再运行:
redis-cli
publish "chat" "hello!"其他terminal都能收到"hello"。
publish channel message
#第一个参数channel, 是你定义的频道名字
#第二个参数message,是你要广播的信息。
Rails
上一次视频:
建立了一个cable
class NotificationsChannel < ApplicationCable::Channel
def subscribed
# 当你加入频道,你只会收到你的通知。当创建一个订阅后,从客户端向服务器端传参数
stream_from "notifications:#{current_user.id}"
end
进入rails console,然后输入ActionCable.server.broadcast "notifications:11", {html: "<h1>hello</h1>"}
各个terminal都会收到hello。
菜鸟教程:http://www.runoob.com/redis/redis-install.html
超强详细Redis数据库入门教程https://my.oschina.net/javagg/blog/471433
Try redis: http://try.redis.io/
Linux 下安装
下载地址:http://redis.io/download,下载最新稳定版本。详细的安装说明这个下载页面有。
$ wget http://download.redis.io/releases/redis-5.0.0.tar.gz $ tar xzf redis-5.0.0.tar.gz $ cd redis-5.0.0 $ make #提取文件
make完后 redis-5.0.0目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
编译完成后,运行Redis。
src/redis-server
可以和Redis交互,使用内建程序client:
src/redis-cli
或者使用brew下载。
Ubuntu 下安装
$sudo apt-get update
$sudo apt-get install redis-server
启动 Redis
$ redis-server
查看 redis 是否安装
redis-cli //进入 127.0.0.1:6379> ping PONG 127.0.0.1:6379>
27.0.0.1 是本机 IP ,6379 是 redis 服务端口。以上说明我们已经成功安装了redis。
Redis 配置
获得配置
语法: redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME 实例: redis 127.0.0.1:6379> CONFIG GET loglevel 使用 * 号获取所有配置项:
编辑配置
你可以通过修改 redis.conf 文件或使用 CONFIG set 命令来修改配置(点击看具体配置参数)。
Redis 数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
String类型:
基本类型。使用SET,GET,声明和获取。
实例;
redis 127.0.0.1:6379> SET name "runoob" # name其实是一个key, Redis的数据结构就是key/value对儿 OK redis 127.0.0.1:6379> GET name "runoob"
Hash(哈希)
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
语法:
HMSET key field value [field value ...]
# key是hash的名字,field/value是一个键值对儿
用HMGET key field,来获取值。
其他的暂时略,具体见http://www.runoob.com/redis/redis-data-types.html
Redis 命令
Redis 命令用于在 redis 服务上执行操作。
要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包中。
$redis-cli
在远程服务上执行命令
如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。
$ redis-cli -h host -p port -a password
实例
$redis-cli -h 127.0.0.1 -p 6379 -a "mypass" redis 127.0.0.1:6379> redis 127.0.0.1:6379> PING
Redis 键(key)
Redis 键命令用于管理 redis 的键。
语法
Redis 键命令的基本语法如下:
redis 127.0.0.1:6379> COMMAND KEY_NAME
实例
127.0.0.1:6379> set myname "chenwei" OK 127.0.0.1:6379> get myname "chenwei" 127.0.0.1:6379> del myname #del是删除. 命令行执行成功后输出(integer) 1, 否则输出(integer) 0 (integer) 1 127.0.0.1:6379> get myname (nil)
keys常用相关命令:http://www.runoob.com/redis/redis-keys.html
命令大全:https://redis.io/commands
Redis的 pub/sub (publish and subscribe)
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。
本博客的第一行视频连接就是讲解redis-cli的发布和订阅。
序号 命令及描述 1 PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。
2 PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态。
3 PUBLISH channel message 将信息发送到指定的频道。
4 PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道。
5 SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。
6 UNSUBSCRIBE [channel [channel ...]] 指退订给定的频道。