redis 通用操作和特性介绍
Redis 通用操作
Keys的通用操作
- keys pattern:获取所有与pattern匹配的key,ps:keys *
- del key1 key2 … 删除指定的key
- exits key:判断key是否存在
- rename key newname:重命名
- expire key seconds:设置过期时间,单位为秒
- ttl key:获取key所剩的超时时间,-1 没有设置超时,-2 超时不存在
- type key:获取key的数据类型
服务器的通用操作
- ping:测试连接是否存活,响应是pong
- echo:在命令行打印
- select:选择数据库
- quit:退出连接
- dbsize:查看当前数据库中key的数目
- info:获取服务器的统计信息
- flushdb:删除当前数据库中所有的key
- flushall:删除所有数据库中的key
Redis 特性介绍
多数据库
一个Redis实例可以创建多个数据库。客户端连接时,可以指定连接哪个数据库。
一个Redis实例最多可以创建16个数据,下标0到15,客户端默认连接的是0号数据库
- select 0:连接 0 号数据库
- move key 1:将当前库的key移到1号库
消息订阅和发布
- 登陆客户端:redis-cli
- 消息订阅:subscribe test
- 批量消息订阅:psubscribe t*,订阅t开头的消息
- 消息发布:publish test ‘message’
数据库事务
- 概述
Redis是单线程的,Redis实际上是采用了线程封闭的观念,把任务封闭在一个线程,自然避免了线程安全问题,不过对于需要依赖多个redis操作的复合操作来说,依然需要锁,而且有可能是分布式锁
Redis 作为NoSQL数据库,也提供了事务机制
Redis中,MULTI/EXEC/DISCARD三个命令是实现事务的基石
MULTI,开启事务,类似于关系型数据的START TRANSACTION
EXEC,提交事务,类似于关系型数据库的COMMIT
DISCARD,回滚事务,类似于关系型数据库的ROLLBACK - 事务特征
在Redis中,所有的命令都会被串行化执行,因此在事务执行期间,Redis不会再为其他的客户端请求提供任何服务,从而保证所有命令执行的原子性
和其他关系型数据相比,在Redis事务中,如果有其中一条命令执行失败了,其后的命令仍然会被执行
在使用Append-Only模式时,Redis会调用系统函数write将事务中所有写的操作写入磁盘。倘若过程中出现系统奔溃的故障,则会导致事务中的部分数据写入磁盘,部分数据丢失的情况。Redis服务器在启动时会进行相关检测,如果发现此类故障,会立即停止启动给出相应的提示信息。此时,我们可以使用Redis工具包中提供的redis-check-aof工具,帮助我们快速到问题所在,并将部分数据回滚。