redis学习笔记5,键值相关命令+Redis高级使用特性
2014-10-17 11:00
651 查看
键值相关命令
keys,返回满足跟定的pattern的所有key
redis 127.0.0.1:6379> keys *
redis 127.0.0.1:6379> keys my*
exists确认一个key是否存在
redis 127.0.0.1:6379> exists name
del
删除一个key
redis 127.0.0.1:6379> del name
expire
设置一个key的过期时间(秒)
redis 127.0.0.1:6379> expire addr 10
ttl
查看一个key还有多少时间过期
redis 127.0.0.1:6379> ttl addr
move
把当前数据库的key转移到其他数据库中
select
选择数据库
redis 127.0.0.1:6379> select 0
进入redis客户端时默认进入0数据库
redis默认有0~15一共十六个数据库
redis 127.0.0.1:6379> move agekey 1
persist
移除给定的key的过期时间
redis 127.0.0.1:6379> persist abc
randomkey
随机返回key空间的一个key
rename
重命名key
type
返回值的类型
ping
测试链接是否存活
redis 127.0.0.1:6379> ping
返回PONG
echo
在命令行打印一些内容
redis 127.0.0.1:6379> echo helloworld
quit
退出链接
dbsize
返回当前数据库key的数目
info
获取服务器的信息和统计
config get
实时传储收到的请求
redis 127.0.0.1:6379> config get timeout
flushdb
删除当前数据库的所有key
flushall
删除所有数据库的所有key
=====================================================================================================================
Redis高级使用特性
安全性
设置客户端链接后进行任何其他指定前需要使用的密码
修改配置文件的属性值:requirepass 123456
修改密码后需要重启redis
auth
授权
redis 127.0.0.1:6379> auth 123456
也可以在登录时就给出密码
./redis-cli -a 123456
主从复制
Redis通过主从复制可以允许多个slave server拥有和master server相同的数据库副本
特点:
1,master可以拥有多个slave
2,多个slave可以链接同一个master外,还再可以连接其他slave(这可以使得在master挂掉时,群连的slave可以立刻编程master)
3,主从复制不会阻塞master,在同步数据时,master可以继续处理client请求。
4,提高系统伸缩性
主从复制过程;
1,Slave与master建立连接,发送sync同步命令
2,master会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新写入的命令并缓存
3,后台完成保存后,就将此文件发送给slave
4,slave将次文件保存到硬盘上
配置主从服务器:
配置slave只需要在slave的配置文件中加入以下配置:
slaveof 192.168.1.1 6379 #指定master的ip和端口
masterauth 123456 #这是主机的密码
info命令下看到
role:slave
master_host:192.168.1.1
master_port:6379
master_link_status:up
....
表示当前机器是从机
info看到
role:master
slave0:192.168.1.2,6379.online
表示当前机器是主机
事物处理
redis对事物的支持比较简单
当一个client在一个连接发出multi命令时,这个连接会进入一个事物上下文,该连接后续命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序执行队列中的所有命令。
redis 127.0.0.1:6379> multi
redis 127.0.0.1:6379> set age 10
redis 127.0.0.1:6379> exec
discard
取消当前事物,清空命令队列,实现回滚
redis 127.0.0.1:6379> multi
redis 127.0.0.1:6379> set age 10
redis 127.0.0.1:6379> discard
注意:当事物中,命令队列执行时出现命令错误时,之前的命令不会回滚,redis有待改进啊。
乐观锁复杂事物控制
(修改时提交版本号)
watch命令会监控规定的key,当exec时如果监控的key从调用watch后发生过变化,则整个事物会失败。
也可以调用watch多次监控多个key,这样就可以对指定的key加乐观锁了。
注意watch的key是对整个连接有效的,事物也一样。如果连接断开,监视和事物都会自动清除,当然了exec,discard,unwatch命令都会清除连接中的所有监视。
session1:
redis 127.0.0.1:6379> get age
“10”
redis 127.0.0.1:6379> watch age
OK
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379>
session2:
redis 127.0.0.1:6379> set age 30
OK
session1:
redis 127.0.0.1:6379> set age 20
redis 127.0.0.1:6379> exec
(nil)
表示冲突,没有执行成功
持久化机制
redis是一个持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。
redis支持2种持久化方式:
1,snapshotting(快照)默认方式
2,Append-only file(缩写aof)的方式。
Snapshotting方式
该方式是将内存中的数据以快照的方式写入到二进制文件中,默认的文件名是dump.rdb。可以通过配置文件设置自动化做快照持久化的方式。我们可以配置redis配置文件,让其n秒内如果超过m个key被修改就自动做快照
save 900 1 #每900秒内如果超过1个key被修改,则发起快照保存
save 300 10 #每300秒内如果超过10个key被修改,则发起快照保存
save 60 10000
aof方式
aof比快照有更好的持久化性。
redis会将每一个收到的写命令都通过write函数追加到文件中,当redis重启时会执行文件中保存的写命令来在内存中重建整个数据库的内容
可以通过配置文件告诉redis我们想要通过fsync函数强制操作系统写入磁盘的时机。
appendonly yes #启用aof持久化方式
appendfsync always #收到写命令就立即写入磁盘,最慢,但是保证完整持久化
appendfsync everysec 每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
appendfsync no 完全依赖os,性能最好,持久化没保证
发布及订阅消息
发布订阅pub/sub是一种消息通信模式,主要目的是解除消息发布者和消息订阅者之间的耦合,redis作为一个pub/sub的serer,在订阅者和发布者之间起到了消息路由的功能,订阅者可以通过subscribe和psubscribe命令向redis server 订阅自己感兴趣的消息类型,redis将信息类型称为通道channel。当发布者通过publish命令向redis server 发送特定类型的信息时,订阅该信息的全部client都会收到此消息。
session1:
redis 127.0.0.1:6379> subscribe tv1 tv2 #同时监听2个频道
session2:
redis 127.0.0.1:6379> publish tv1 helloworld
session1:
“message”
“tv1”
“helloworld”
虚拟内存的使用
redis与操作系统的虚拟内存不是一回事,但是思路和目的是一样的。
把暂时不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的内存空间。
虚拟内存的配置:
vm-enabled yes #开启vm功能
vm-swap-file /tmp/redis swap #交换出来的value保存的文件路径
vm-max-memory 1000000 #redis使用的最大内存上限
vm-page-size 32 #每个页面的大小32字节
vm-pages 134217728 #最多使用多少页面
vm-max-threads 4 #用于执行value对象换入缓存的工作线程数量
提示要添加配置:
really-use-vm yes
重启redis
pkill redis-server
keys,返回满足跟定的pattern的所有key
redis 127.0.0.1:6379> keys *
redis 127.0.0.1:6379> keys my*
exists确认一个key是否存在
redis 127.0.0.1:6379> exists name
del
删除一个key
redis 127.0.0.1:6379> del name
expire
设置一个key的过期时间(秒)
redis 127.0.0.1:6379> expire addr 10
ttl
查看一个key还有多少时间过期
redis 127.0.0.1:6379> ttl addr
move
把当前数据库的key转移到其他数据库中
select
选择数据库
redis 127.0.0.1:6379> select 0
进入redis客户端时默认进入0数据库
redis默认有0~15一共十六个数据库
redis 127.0.0.1:6379> move agekey 1
persist
移除给定的key的过期时间
redis 127.0.0.1:6379> persist abc
randomkey
随机返回key空间的一个key
rename
重命名key
type
返回值的类型
ping
测试链接是否存活
redis 127.0.0.1:6379> ping
返回PONG
echo
在命令行打印一些内容
redis 127.0.0.1:6379> echo helloworld
quit
退出链接
dbsize
返回当前数据库key的数目
info
获取服务器的信息和统计
config get
实时传储收到的请求
redis 127.0.0.1:6379> config get timeout
flushdb
删除当前数据库的所有key
flushall
删除所有数据库的所有key
=====================================================================================================================
Redis高级使用特性
安全性
设置客户端链接后进行任何其他指定前需要使用的密码
修改配置文件的属性值:requirepass 123456
修改密码后需要重启redis
auth
授权
redis 127.0.0.1:6379> auth 123456
也可以在登录时就给出密码
./redis-cli -a 123456
主从复制
Redis通过主从复制可以允许多个slave server拥有和master server相同的数据库副本
特点:
1,master可以拥有多个slave
2,多个slave可以链接同一个master外,还再可以连接其他slave(这可以使得在master挂掉时,群连的slave可以立刻编程master)
3,主从复制不会阻塞master,在同步数据时,master可以继续处理client请求。
4,提高系统伸缩性
主从复制过程;
1,Slave与master建立连接,发送sync同步命令
2,master会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新写入的命令并缓存
3,后台完成保存后,就将此文件发送给slave
4,slave将次文件保存到硬盘上
配置主从服务器:
配置slave只需要在slave的配置文件中加入以下配置:
slaveof 192.168.1.1 6379 #指定master的ip和端口
masterauth 123456 #这是主机的密码
info命令下看到
role:slave
master_host:192.168.1.1
master_port:6379
master_link_status:up
....
表示当前机器是从机
info看到
role:master
slave0:192.168.1.2,6379.online
表示当前机器是主机
事物处理
redis对事物的支持比较简单
当一个client在一个连接发出multi命令时,这个连接会进入一个事物上下文,该连接后续命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序执行队列中的所有命令。
redis 127.0.0.1:6379> multi
redis 127.0.0.1:6379> set age 10
redis 127.0.0.1:6379> exec
discard
取消当前事物,清空命令队列,实现回滚
redis 127.0.0.1:6379> multi
redis 127.0.0.1:6379> set age 10
redis 127.0.0.1:6379> discard
注意:当事物中,命令队列执行时出现命令错误时,之前的命令不会回滚,redis有待改进啊。
乐观锁复杂事物控制
(修改时提交版本号)
watch命令会监控规定的key,当exec时如果监控的key从调用watch后发生过变化,则整个事物会失败。
也可以调用watch多次监控多个key,这样就可以对指定的key加乐观锁了。
注意watch的key是对整个连接有效的,事物也一样。如果连接断开,监视和事物都会自动清除,当然了exec,discard,unwatch命令都会清除连接中的所有监视。
session1:
redis 127.0.0.1:6379> get age
“10”
redis 127.0.0.1:6379> watch age
OK
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379>
session2:
redis 127.0.0.1:6379> set age 30
OK
session1:
redis 127.0.0.1:6379> set age 20
redis 127.0.0.1:6379> exec
(nil)
表示冲突,没有执行成功
持久化机制
redis是一个持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。
redis支持2种持久化方式:
1,snapshotting(快照)默认方式
2,Append-only file(缩写aof)的方式。
Snapshotting方式
该方式是将内存中的数据以快照的方式写入到二进制文件中,默认的文件名是dump.rdb。可以通过配置文件设置自动化做快照持久化的方式。我们可以配置redis配置文件,让其n秒内如果超过m个key被修改就自动做快照
save 900 1 #每900秒内如果超过1个key被修改,则发起快照保存
save 300 10 #每300秒内如果超过10个key被修改,则发起快照保存
save 60 10000
aof方式
aof比快照有更好的持久化性。
redis会将每一个收到的写命令都通过write函数追加到文件中,当redis重启时会执行文件中保存的写命令来在内存中重建整个数据库的内容
可以通过配置文件告诉redis我们想要通过fsync函数强制操作系统写入磁盘的时机。
appendonly yes #启用aof持久化方式
appendfsync always #收到写命令就立即写入磁盘,最慢,但是保证完整持久化
appendfsync everysec 每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
appendfsync no 完全依赖os,性能最好,持久化没保证
发布及订阅消息
发布订阅pub/sub是一种消息通信模式,主要目的是解除消息发布者和消息订阅者之间的耦合,redis作为一个pub/sub的serer,在订阅者和发布者之间起到了消息路由的功能,订阅者可以通过subscribe和psubscribe命令向redis server 订阅自己感兴趣的消息类型,redis将信息类型称为通道channel。当发布者通过publish命令向redis server 发送特定类型的信息时,订阅该信息的全部client都会收到此消息。
session1:
redis 127.0.0.1:6379> subscribe tv1 tv2 #同时监听2个频道
session2:
redis 127.0.0.1:6379> publish tv1 helloworld
session1:
“message”
“tv1”
“helloworld”
虚拟内存的使用
redis与操作系统的虚拟内存不是一回事,但是思路和目的是一样的。
把暂时不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的内存空间。
虚拟内存的配置:
vm-enabled yes #开启vm功能
vm-swap-file /tmp/redis swap #交换出来的value保存的文件路径
vm-max-memory 1000000 #redis使用的最大内存上限
vm-page-size 32 #每个页面的大小32字节
vm-pages 134217728 #最多使用多少页面
vm-max-threads 4 #用于执行value对象换入缓存的工作线程数量
提示要添加配置:
really-use-vm yes
重启redis
pkill redis-server
相关文章推荐
- Redis学习笔记(十二) 高级命令:服务器管理命令
- TQ2440 学习笔记—— 6、Windows、Linux环境下相关工具、命令的使用
- Redis学习笔记3-Redis5个可运行程序命令的使用
- redis学习笔记---redis特性(expire、事务、数据排序、config命令)
- Redis 笔记与总结5 Redis 常用命令之 键值命令 和 服务器命令 && 高级应用之 安全性 和 主从复制
- Docker学习笔记2--频繁使用的相关命令
- redis 基本命令学习三(键值相关命令及服务器相关命令)
- Redis学习笔记(八)事务 和 连接相关命令
- Docker学习笔记2--频繁使用的相关命令
- Redis 学习笔记(二):数据类型与相关命令
- Redis学习笔记 (四) 之KEY相关命令
- Redis基础、高级特性与性能调优-Redis的数据结构和相关常用命令
- redis常用命令及高级应用之键值的相关命令
- Redis学习笔记2--Redis数据类型及相关命令
- Redis学习笔记2--Redis数据类型及相关命令
- JSTL学习笔记3-----URL相关标签的使用
- java高级特性学习笔记
- IO特性(1): socket相关的几个高级IO函数(Unix网络编程笔记)
- Redis实战《红丸出品》3.1 Redis常用键值相关命令
- JSTL学习笔记3-----URL相关标签的使用