浅谈Redis---(2)

来源:互联网 发布:linux如何修改用户组 编辑:程序博客网 时间:2024/06/10 03:44

本篇文章将会继续介绍Redis缓存数据库,将从redis命令、事务和发布订阅等方面来介绍。

Redis命令

Redis 命令用于在 redis 服务上执行操作。

要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包中。
命令为:

$ redis-cli

如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。

$redis-cli -h 127.0.0.1 -p 6379 -a "mypass"redis 127.0.0.1:6379>redis 127.0.0.1:6379> PINGPONG

这仅仅介绍了redis连接的命令,redis对于5种数据类型,每种类型都有相对应的命令操作,官方文档上写的清清楚楚,可查看官方文档https://redis.io/commands

Redis HyperLogLog

Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

Redis HyperLogLog 是用来做基数统计的算法,它的优点是:在输入元素的数量或者体积非常大的时候,计算基数所需要的空间固定并且十分小;缺点是:只会根据输入元素来计算基数不会存储输入元素的本身,所以不能通过命令的方式查看输入元素的值。

演示工作过程:

redis 127.0.0.1:6379> PFADD runoobkey "redis"1) (integer) 1redis 127.0.0.1:6379> PFADD runoobkey "mongodb"1) (integer) 1redis 127.0.0.1:6379> PFADD runoobkey "mysql"1) (integer) 1redis 127.0.0.1:6379> PFCOUNT runoobkey(integer) 3

更多命令参考官方文档

Redis 发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

Redis 客户端可以订阅任意数量的频道。

下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
这里写图片描述
当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
这里写图片描述

实例演示:创建redisChat的消息频道

redis 127.0.0.1:6379> SUBSCRIBE redisChatReading messages... (press Ctrl-C to quit)1) "subscribe"2) "redisChat"3) (integer) 1

现在,我们先重新开启个 redis 客户端,然后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。

redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"(integer) 1redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis by runoob.com"(integer) 1# 订阅者的客户端会显示如下消息1) "message"2) "redisChat"3) "Redis is a great caching technique"1) "message"2) "redisChat"3) "Learn redis by runoob.com"

Redis 事务

Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

  • 单独隔离操作,不被其他客户端发送的命令请求打断,序列化地顺序执行。
  • 事务是一个原子操作,要么事务的所有命令全部执行,要么所有命令都不执行。
    注:什么是序列化?
    就是一种用来处理对象流的机制,将对象的内容进行流化,方便传输。

一个事务从开始到执行会经历以下三个阶段:

  • 开始事务
  • 命令入队
  • 执行事务

实例: 它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:

redis 127.0.0.1:6379> MULTIOKredis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"QUEUEDredis 127.0.0.1:6379> GET book-nameQUEUEDredis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"QUEUEDredis 127.0.0.1:6379> SMEMBERS tagQUEUEDredis 127.0.0.1:6379> EXEC1) OK2) "Mastering C++ in 21 days"3) (integer) 34) 1) "Mastering Series"   2) "C++"   3) "Programming"

Redis 脚本

Redis 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。
Eval 命令的基本语法如下:

redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

实例演示:

redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second1) "key1"2) "key2"3) "first"4) "second"
原创粉丝点击