redis学习笔记(三)
来源:互联网 发布:数据字典的作用 编辑:程序博客网 时间:2024/06/04 22:09
1.键值相关命令
keys * //取出当前数据库的所有key
exits key // 看某个key是否存在
del key //删除一个key
expire key time //设置key的生命周期
ttl key //返回key的有效时长,-1表明次key已经过期
move key 数据库名称 // select 0; move age 1; select 1;get age-> 30 将age:30从0号数据库挪到1号数据库
select 0/1/2.. 15 //总共16个数据库,选择数据库;
persist //取消定时;expire age 300; persist age ;取消过期时间
randomkey key //随机返回当前数据库的一个key
rename key //重命名key
type key //返回key的数据类型
2.服务器相关命令
1.连接到服务器之后:ping 会返回PONG;如果redis-server没启动,则返回连接失败;
redis 127.0.0.1:6379> ping
PONG
2.echo 命令
redis 127.0.0.1:6379> echo redis
"redis"
3.quit //退出连接或者exit
4.dbsize //返回当前数据库中key的数目。
5.info //获取服务器的信息和统计,比如redis版本,
6.config get //实时存储收到的请求。如config get * //返回当前的配置信息,具体些:CONFIG GET save 返回save相关配置;
7.flushdb //清空所有的key,慎重使用; 直接flushdb,不用加参数:清空当前数据库
8.flushall //删除所有数据库的所有key
3.redis的高级应用:
1).安全性
2).主从复制
3).事务处理
4).持久化机制
5).发布订阅消息
6).虚拟内存的使用
(一)、安全性
警告:因为Redis的速度相当快,所以一台性能较好的服务器,一个外部的用户可以在一秒钟进行15W次密码尝试。密码需要非常复杂。
在配置文件中修改:requirepass redisapp
这时:redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
如果:
redis 127.0.0.1:6379> keys *
(error) ERR operation not permitted
redis 127.0.0.1:6379> auth redisapp
OK //登录授权
或者client启动时:redis-cli -a redisapp //直接加入密码就OK.
(二)、主从复制
Redis主从复制特点:
1.Master可以拥有多个slave;
2.多个Master可以连接同一个Master外,还可以连接到其他slave;
3.主从复制不会阻塞Master,在同步数据时,Master可以继续处理client请求;即同时读写不会影响性能;
4.提高系统伸缩性。
Redis主从复制过程:
1).Slave与Master建立连接,发送sync命令;
2).Master会启动一个后台进程,将数据库快照文件保存到文件中,同时Master主进程会开始收集新的写命令并缓存;
3).后台完成保存后,就将此文件发送给Slave;
4).Slave将此文件保存到硬盘上;
配置主从服务器:
在 从服务器的redis.conf中加入slaveof <masterip> <masterport>及masterauth <master-password>即可。
怎么看当前的redis是主还是从?通过info命令,然后有个role角色,能看到master或者salve;
(三)、事务处理
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> set age 10
QUEUED
redis 127.0.0.1:6379> set age 100
QUEUED
redis 127.0.0.1:6379> exec
1) OK
2) OK
redis 127.0.0.1:6379> get age
"100" //MULTI事务放入队列
事务回滚:discard
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> incr age
QUEUED
redis 127.0.0.1:6379> INCR name
QUEUED
redis 127.0.0.1:6379> exec
1) (error) ERR value is not an integer or out of range
2) (integer) 1
注意:事务队列中的某个任务执行失败之后,事务不会回滚。这个是需要改进的地方。
可以通过watch命令来监听某个key,如果一旦发生变化,则此key发生的所有事情将不被执行。
(四)、持久化机制:将内存中的数据dumping到硬盘。
两种方式:1.快照(默认):只将数据存储到文件;2.aof(需要修改配置):将任何操作存到文件
1.快照:在配置文件中如: save 900 1 #900秒内超过1个key被修改,则发起保存;
2.AOF:由于快照方式是在一定间隔时间做一次的,所以如果Redis意外down掉的话,就会丢失最后一次快照后的所有修改。
此种方式:redis会将每一个收到的命令都dump到磁盘上。
(五)、发布与订阅消息
发布订阅(PUB/SUB)是一种消息通信模式,主要目的是解除消息发布者和消息订阅者之间的耦合,Redis作为一个PUB/SUB的server,在订阅者和发布者之间启动了消息路由的功能。订阅者可以通过subscribe和pubscribe命令向Redis server订阅自己感兴趣的消息类型,Redis将信息类型成为通道。当发布者通过publish命令向Redis server发送特定类型的信息时,订阅该信息类型的全部client都会收到此消息。
第一个终端:
redis 127.0.0.1:6379> SUBSCRIBE tv1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "tv1"
3) (integer) 1
1) "message"
2) "tv1"
3) "tv1-pub"
第二个终端:
redis 127.0.0.1:6379> SUBSCRIBE tv1 tv2
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "tv1"
3) (integer) 1
1) "subscribe"
2) "tv2"
3) (integer) 2
第三个终端:发布
redis 127.0.0.1:6379> PUBLISH tv1 "tv1-pub"
(integer) 2
redis 127.0.0.1:6379> PUBLISH tv2 "tv2-test"
(integer) 1
则能够看到1,2终端有对应的消息展示。
(六)、虚拟内存:不同于操作系统的虚拟内存
暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的内存空间用于其他需要访问的数据。尤其是对于Redis这样的内存数据库,内存总是不够用的。因此利用虚拟内存可以把那些不经常访问的数据交换到磁盘上。
- redis学习笔记(三)
- Redis 学习笔记三
- redis学习笔记三
- redis学习笔记(三)
- Redis学习笔记(三)
- Redis学习笔记(三)---对象
- redis学习笔记三(列表)
- redis学习笔记(三)
- Redis学习笔记(三)
- Linux学习笔记(三)--redis学习
- redis学习笔记三之排序
- redis学习笔记三之排序
- 三 redis学习笔记之排序
- Redis学习笔记(三)--事务
- Redis学习笔记三、List数据类型
- redis 学习笔记三(队列功能)
- redis学习笔记三(队列功能)
- Redis学习笔记之三:String类型
- Oracle的分析函数
- java中可变长参数
- emacs在win8乱码
- Liunx 中使用ssh登录配置问题
- DOM应用案例--选择输入对话框
- redis学习笔记(三)
- 什么是物理事务和逻辑事务?
- 平衡二叉树旋转平衡(要看)!
- 重要数据的计划任务备份和ACL权限的设置
- 七步入门CMake之第四步(自我检查)
- C++11 中的线程、锁和条件变量
- final修饰一个对象
- POJ 2155 树状数组
- 自定义的组件xml属性