【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务
redis特性
多数据库
一个redis实例可以包含多个数据库,客户端可以指定连接某个redis实例的哪个数据库,就好比一个mysql数据库中创建了多个数据库,客户端连接时指定连接哪个数据库。
一个redis实例最多可以提供16个数据库,下标从0到15,客户端默认连接第0号数据库,也可以通过select选择连接哪个数据库。
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzk1Mi83YjY4NTc1NDU3OTI3OTNlZDM5MmIxMDc3Y2U0YjMxMC5KUEVH)
将newkey移植到1号库
move newkey 1
将当前数据库中的key移植到1号数据库中
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzI5LzEwY2QzZTcwNWZhYzFkNTI3MWU1MDg1ODM1NWQzMTg1LkpQRUc=)
服务器命令
ping
测试连接是否存活
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzc0MC81NDIyZDdhYzQ5OTQ2ODliNzVlZGE0ZTEzNDM0ZWEwNC5KUEVH)
执行下面命令之前,我们停止redis服务器
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUyMC8yMTRjMzcwY2E0MWVmMWEyNDQxYWI3NmZjZTc3NjM3OC5KUEVH)
echo
在命令行打印一些内容
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzY5NS9kMmU4MzM3MjZiMmIwYjdiNzIxYTIzMmVmM2VhNzRkNy5KUEVH)
select
连接数据库,redis数据库编号从0到15,可以选择任意一个数据库来进行数据的存取。
当选择16时,报错,说明没有编号为16的这个数据库
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQ0Mi8zNGJhMTgxNWU3MmI4MDM3YTg3ODFiMGQzYzEzMGFmYS5KUEVH)
quit/exit
退出连接
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzk0Ni9hZTMyZjg4ZGI5Y2JlZmZhZTQ4MTM3Y2IyMDRlOGYxMi5KUEVH)
dbsize
返回当前数据库中key的数目
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczL2I5ZTkzNTBhZTEzODIwM2YwOWY1MDc5ZjRjNzQ5NTE5LkpQRUc=)
info
获取服务器的信息和统计
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg3MS9mMDZiZDRmMjNlMzQwNTM1YTk3YTBhODkyNGM3YWI5Zi5KUEVH)
flushdb
删除当前连接数据库中的所有key
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgzNC9kNmZmYzFjODM2YjJlOTY0NWEwYWM2ZTg2MTNhMGRjMi5KUEVH)
flushall
删除所有数据库中的所有key
消息订阅与发布
subscribe channel
订阅频道
如:subscribe mychat表示订阅mychat这个频道
psubscrible channel*
批量订阅频道
如:psubscrible s*表示订阅以“s”开头的频道
publish channel content
在指定的频道中发布消息
如:publish mychat 'today is a good day!'
步骤一:
在第一个连接中,订阅mychat频道,此时如果没有人发布消息,当前窗口处于等待状态。
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM0MS9hZDg2YzhiM2ExODY2NmI2ZTFjNDdlMTliNTA1ZDU3ZC5KUEVH)
步骤二:
在另一个窗口中,在mychat频道中,发布消息
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzExOS9mOGVjYWJiMzhlYzI0ZDhmMTA3NzEzNDMxY2Y1YWZhZi5KUEVH)
切换到第一个窗口中,查看消息
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzkyMy9kODk4Y2RhMDk0NmIwZTBlMTk5MzdiZDkwN2M2ZDNkYi5KUEVH)
步骤三:
再到第三个窗口,批量订阅以my开头的所有频
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzkxOC84NTYwMDhkZTNhMWZiYmI3YjIwMzg0MWNkMjI5ZjJjZS5KUEVH)
步骤四:
在第二个窗口,分别以"mychat"和"mychat2"发布消息
先使用“mychat”发布消息,第一个窗口和第三个窗口均收到消息
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzk0Mi9iNTQ4M2Q0NTViODNjODAyNTRhODRmYzgyMmZiMjI2ZS5KUEVH)
查看第一个窗口
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzYxOC9mNTAwMzg2NzBhNGY4ZjQ3ODQwOTIzZDZiZmNiOTU2Mi5KUEVH)
查看第三个窗口
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzEwNS9hZTJiZDBiNWEzNGQ4NDRhMWMxYTdiMGQ3ZDg0YzAwOS5KUEVH)
回到第二个窗口分别以“mychat”和“mychat2”发布消息
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzMzOC85OWUxZjk2NDg5NzZlYzgxOWMxZTU0ZGE2MDFhYjJkYS5KUEVH)
再次查看第一个窗口
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM4MS81YzNhNTg1YWMxMTdiNzYzZWMxYjUwM2Q2OTM5ZjlmNS5KUEVH)
再次查看第三个窗口
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzI1NS8yZmE2ZjA2N2Q4OGY0NzdkNjEzYWI4Yzg4MmJhOWE1Zi5KUEVH)
redis事务
和众多其它数据库一样,redis作为NoSQL数据库也同样提供了事务机制,在redis中,MULTI/EXEC/DISACRD这三个命令是我们实现事务的基石。
redis事务特征
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM3OC84YjAxNmNhN2E2OWRkMGQzZTcwOTQ5ZWIyNmYyMzg3YS5KUEVH)
命令解释
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzcwMC9iNGU4NGY4YzQ5Njk4NTU5YWJmZDI0YWIxMjhmMDU1Yy5KUEVH)
测试
步骤一:
在第一个窗口,设置num,并获得数据
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgwMS9iMTdiYjNlNzY5NGM2YzdiY2M3MjM1N2E3NDJmMDA5OS5KUEVH)
步骤二:
在第二个窗口,num累加1,并获得数据
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzYwNC83MjI1YTc5MTY2YmZhNzA5N2Y1OWE3MGI2OTM0M2I4NC5KUEVH)
步骤三:
回到窗口一,获得数据
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzMwMS80YWUxYThmMjg0M2I0YTI5Nzk4MjZlZDczM2JjZDNjZC5KUEVH)
步骤四:
在第一个窗口,开启事务,多次累加数据
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzI2OC82NjFlYTgxNmQ4MDI5YTRhNGVhMDYwMDlmNGI5YTE4NC5KUEVH)
步骤五:
在第二个窗口获取数据
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUyLzVkZjM3MWUyNDRjMDIyZDU2NzVjZDVlNmZmODFhZTJjLkpQRUc=)
步骤六:
提交事务
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzI5Mi9kODg1NGFhNTI1OTM0ZTA2MDUwNmE2MmM1MmE0NGMxYy5KUEVH)
回滚
![【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务 【Redis学习】:redis特性——多数据库、服务器命令、消息订阅与发布和事务](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzYzMi81MTg1OTk3MmUyNmYzOTcwYjMyOTVhYTAyMGU2NThmMC5KUEVH)
失败命令