二 Redis的特性

家住魔仙堡 提交于 2019-11-27 17:57:55
 
 
 
 
 
 
 
Redis 的特性
1.多数据库
1)概念:一个 redis 实例可以包含多个数据库,客户端可以指定连接到某个 redis 实例的的某
个库,就好比 mysql 中创建过个数据库,客户端连接时指定连接哪个库
2)一个 redis 实例最多提供 16 个库,下表从 0 到 15,客户端默认连接 0 号库,也可以通过
select 指定连接哪个库
3)通过 move 命令可以将某个 key 移动到其他的库中
2. 服务器命令
Shutdown 通过客户端关闭服务器
ping 命令测试连接是否存活
echo 命令答应一些内容
quit 退出客户端
dbsize 返回当前数据库中 key 的数目
Info 获取服务器的信息和统计
flushdb 删除当前选择数据库中的所有 key
Flushall 删除所有数据库中的所有 key
 
3 消息订阅和发布(作为消息队列)
 subscribe channel:订阅频道,例:subscribe mychat ,订阅 mychat 这个频道
 Psubscribe channel*:批量订阅频道,例:psubscribe s*,订阅以 s 开头的频道
 Publish channel content: 在指定的频道中发布消息, 如 publish mychart ‘today is a
new day’
实现步骤如下:
1) 订阅某个频道(消费者,消费某个频道的消息)
2)发布消息(生产者,向某个频道生产消息)

 

 
4.redis 事务(批处理)
4.1 概念
和众多其他数据库一样,redis 作为 nosql 数据库也同样提供了事务机制,在 redis 中,
MULTI/EXEC/DISCARD 这三个命令是我们实现事务的基石
4.2 redis 事务特征
1、在事务中的所有命令都将会被串行化的顺序执行,事务执行期间,Redis 不会再为其它
客户端的 请求提供任何服务,从而保证了事物中的所有命令被原子的执行
2、和关系型数据库中的事务相比,在 Redis 事务中如果有某一条命令执行失败,其后的命
令仍然会被继续执行。
3、我们可以通过 MULTI 命令开启一个事务,有关系型数据库开发经验的人可以将其理解为
"BEGIN TRANSACTION"语句。在该语句之后执行的命令都将被视为事务之内的操作,最后我
们可以通过 执行 EXEC/DISCARD 命令来提交/回滚该事务内的所有操作。这两个 Redis 命令可
被视为等同于关系型数据库中的 COMMIT/ROLLBACK 语句。
4、在事务开启之前,如果客户端与服务器之间出现通讯故障并导致网络断开,其后所有待
执行的语句都将不会被服务器执行。然而如果网络中断事件是发生在客户端执行 EXEC 命令之
后,那么该事务中的所有命令都会被服务器执行。
5、当使用 Append-Only 模式时,Redis 会通过调用系统函数 write 将该事务内的所有写
操作在本次调用中全部写入磁盘。然而如果在写入的过程中出现系统崩溃,如电源故障导致的宕
机,那么此时也许只有部分数据被写入到磁盘,而另外一部分数据却己经丢失。Redis 服务器会
在重新启动时执行一系列必要的一致性检测,一旦发现类似问题,就会立即退出并给出相应的错
误提示。 此时,我们就要充分利用 Redis 工具包中提供的 redis-check-aof 工具,该工具可以
帮助我们定位到数据不一致的错误,并将己经写入的部分数据进行回滚。修复之后我们就可以再
次重新启动 Redis 服务器了。
 
4.3 命令解释
multi:开启事务用于标记事务的开始,其后执行的命令都将被存入命令队列,直到执行 EXEC
时,这些命令才会被原子的执行,类似与关系型数据库中的:begin transaction
exec:提交事务,类似与关系型数据库中的:commit
discard:事务回滚,类似与关系型数据库中的:rollback
4.4 事务的使用
 
 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!