三、Redis的高级命令及高级应用

Redis常用命令

一、键值名

1、keys *  返回所有的键 key

keys my*


2、exists 确认一个键是否存在

exists name  返回1存在  0不存在


3、del 删除一个键

del name  返回1删除成功


4、expire 设置一个key的过期时间

epire addr 10  // 设置addr10秒过期

ttl addr  // 查看多少时间过期, 返回-1表示过期了


5、select 选择数据  在redis中的数据库是0 - 15 共16个数据库

select 0  // 选择当前数据库

set age 30

get age // 30

move age 1  // 将key移动到1数据库

get age // nil

select 1

get age // 30


6、persist 移除给定key的过期时间

expire age 300

ttl age

persist age

ttl age


7、randomkey 随机返回key空间的一个key

randomkey


8、rename 重命名

rename age age_new // 返回OK表示成功


9、type返回值的类型

type addr  // string

trpe addrsfs // none

type myzset1 //zset

type myset1 //set

type mylist1 // list


二、服务器命令

1、ping 测试链接是否存活

返回PONS ,白哦事


2、echo 同 php


3、select 选择数据库。Redis数据库编号从0-15,我们可以任意选择一个数据库来进行数据的存储

select 1   select 2    select 3


4、exit  quit  退出链接


5、dbsize  返回当前数据库的所有数目


6、info 获取服务器的信息和统计


7、config get实时传储收到的请求

config get *

config get dir


8、flushdb  删除当前选择数据中的所有key

dbsize

flushdb

dbsize


9、flushall 删除所有数据库中的所有key

dbsize

flushall

dbsize


三、Redis高级实用特性

1、安全性

设置客户端连接后进行任何其他指定前需要使用的密码,因为redis运行速度非常快,1秒可以达到150000次密码尝试,所以我们设置密码的时候需要非常强大的密码

在config文件下修改配置文件

# requirepass foobared

requirepass shenzhen

在客户端输入密码就可以了

auth shenzhen

也可以在登录的时候指定   ./redis-cli -a shenzhen


2、主从复制

Redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据副本

Redis主从复制特点:

1)Master可以拥有多个slave

2)多个slave可以连接同一个master外,还可以连接其他slave

3)主从复制不会阻塞master,在同步数据时,master可以继续处理client请求

4)提高系统的伸缩性


配置主从服务器

配置slave服务器很简单,只需要在slave的配置文件中加入以下配置

slaveof 192.168.1.1 6379   #指定master的IP和端口

masterauth lamp  这是主机的密码


3、事务处理

Redis对事务的支持目前还是比较简单。Redis只能保证一个client发起的事务中的命令可以连续的执行,而不会插入其他client的命令

简单事务处理

multi  //打开事务

set age 10

set age 20

discard  // 取消事务回归

exec  1) OK  2)OK

get age  // 20 


乐观锁复杂事务控制

乐观锁:大多数是基于数据版本(version)的记录机制实现的。即为数据增加一个版本标识,在基于数据库表的解决方案中,一般是通过为数据库表添加一个"version"字段来实现读取数据时,将此版本号一同读出,之后更新时,对此版本号加1。

此时,将提交数据的版本号与数据库表对应记录的当前版本号进行对比,大于更新,否则时过期数据

例如:

session1

get age  //10

watch age // 打开监控,就加入了乐观锁   unwatch,discard,exec都会清除所有监控

multi

set age 20


session2

set age 30

get age //10


然后再回到session1

exec

返回nil

get age // 30


4、持久化机制

Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。

Redis支持两种持久化方式:

1)、snapshotting(快照)也是默认方式

写入到二进制文件中,叫dump.rdb。通过配置自动做快照持久化

save 900 1  #900秒内如果超过1个key被修改,则发起快照保存

save 300 10 # 300秒内如果超过10个key被修改,则发起快照保存

save 60 10000 60秒内如果超过10000个key被修改,则发起快照保存


2)、Append-only file(缩写 aof)的方式 将操作写入文件

快照方式是有时间间隙的

aof笔快照方式有更好的持久化性,

redis会将每一个手哦到的写命令通过write函数追加到文件中,当redis重启时会通过重新执行文件保存写命令

由于os会在内核中缓存write做的修改,所以可能不是立即写到磁盘上,这样aof方式的持久化也还是有可能会丢失部分修改

可以通过配置文件告诉redis我们想要通过fsync函数强制os写入到磁盘的时机

appendonly  yes //启用aof持久化方式

#appendsync always //收到写命令就立即写入磁盘,最慢,但是保证完全持久化

appendsync everysec  //每秒钟写入磁盘一次,再性能和持久化方面做了很好的折中

#appendlsync no // 完全依赖ok,性能最好,但是没有保证


5、发布订阅消息

发布订阅(puh/sub)是一种消息通信模式,主要目的是解除消息发布者和消息订阅者之间的耦合

Redis作为一个pub/sub的server,再订阅和发布者之间起到了消息路由的功能。

订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将信息类型称为通道(channel)

当发布者通过publish命令向redis server发送特定类型的信息时,订阅信息类型的全部client都会收到此消息。


session 1

subscribe  tv1 // 订阅tv1


session 2

subscribe  tv1 tv2  // 订阅两个频道


session 3

publish tv1 tianhu // 上面两个session都会收到tianhu

publish tv2 huijia  // session2会提示


6、虚拟内存的使用--只支持2.4之前的版本,之后的版本作者嫌开发麻烦,将这个功能舍弃掉了;它的核心思想是将key保留在内存中,而将值保留在磁盘上

再什么时候内存都是非常宝贵的,我们将那些不经常访问的数据交换到磁盘上形成虚拟内存

通过配置实现虚拟内存

vm-enable yes  #开启vm功能

vm-swap-file  /tmp/redis.swap 

vm-max-memory 1000000  #内存上限

vm-page-size 32 #每个页面的大小32字节

vm-page 1332132123  #最多多少页

vm-max-threads 4  #用于执行value工作线程数量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值