浅谈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"
- 浅谈Redis---(2)
- 浅谈Redis---(1)
- Redis(简介)深入浅谈。
- 浅谈redis
- 浅谈redis
- 浅谈Redis
- redis浅谈
- 浅谈Redis
- redis浅谈教你使用redis(一)
- redis浅谈教你使用redis(一)
- 浅谈redis应用场景
- 浅谈redis事物
- Redis集群浅谈
- 浅谈Memcached与Redis
- 浅谈Redis事务机制
- Redis入门之浅谈主从复制(一)
- Redis入门之浅谈redis事务
- redis(2)、redis数据类型
- hdu2295(DLX重复覆盖)
- ios::sync_with_stdio(false);
- python通过thrift实现向flume发送数据
- AP聚类算法原理
- 后缀表达式
- 浅谈Redis---(2)
- Android Studio live template巧用动态模板也能大大提高你的开发效率
- 关于MySQL 触发器的使用
- 【theano-windows】学习笔记七——logistic回归
- Spring静态代理
- 入职自我介绍
- 选择排序、快速排序、冒泡排序、插入排序
- 如何选择compileSdkVersion, minSdkVersion 和 targetSdkVersion
- CSS3 background-size 属性