Redis快速上手

基本操作

redis(remote dictionary server)
redis缓存有两种类型:数据缓存,页面缓存
在开发网站的时候一些数据不会在短时间内发生变化,那么可以将网页信息放到读取速度更快的介质上(内存)或者通过较少的计算量就可以获得该数据。
介质可以是文件、数据库、内存、内存进场用于数据缓存

页面缓存:经常用在CMS内容管理系统中
数据缓存:页面的具体数据中,如一个电商的网页,里面有很多不同的模块,那么可以根据这些模块信息设置建立不同的redis数据缓存来提高访问效率。

1.redis支持 list 、hash 、set 、zset(sorted set)、string 五种数据类型
2.redis支持主从模式应用
3.redis支持数据的持久化,可以讲内存中的数据保存在硬盘中,重启的时候可以再次加载进行使用
4.redis单个value的最大限制是1GB

具体使用
**1.key的操作:**在redis里面除了“\n”和空格不能作为key名字的组成部分外,其他内容都可以作为key的名字部分,名字长度不做要求。 但是一般不要过长否则影响查询速度
2values:就是五种数据类型
3.key的相关操作:

exists:是否存在
del:删除指定的key
type:返回key的类型(string等)默认string
keys pattern:返回匹配指定模式的key
rename oldkey newkey:改名字
dbsize:返回当前数据库的key的数量
expire key seconds:设置key的有效时间(单位秒,过期了之后再ttl就不会在有过期的key)
ttl key:检测key剩余的有效时间
select db-index:选择数据库
move key de-index:启动key到指定数据库
flushdb:删除当前数据库
flushall:删除所有数据库

String类型操作
redis的string可以包含任何数据,包括jpg图片或者序列化对象。
set key value:设置key对应的值为string类型的value
mset key1 value1…keyN valueN:一次设置多个key的值
mget key1 value1…keyN valueN:一次获取多个key的值
incr key:对key的值做加加操作,并返回新值 key需为int类型
decr key:对key的值做减减操作,并返回新值
incrby key integer:同incr,加指定值
decrby key integer:同decr,减指定值
append key value:给指定key的字符串值追加value
substr key start end:返回截取过的key的字符串值

List类型操作
list类型其是就是一个双向链表,通过push,pop操作从链表的头部尾部添加删除元素,这使得list既可以用作栈,也可以用作队列
list链表类型应用场合 可以有重复元素
获取最新的10个登录用户信息 select * from user order by logintime desc limit 10;
以上sql语句可以满足实现用户需求,但是数据多的时候,如有2亿条数据,那么全部数据都要受到影响,对数据库的负载比较高,特别还需要排序,这种情况还需要给关键字段(id或者logintime)设置索引,索引也比较消耗系统资源
如果通过list链表实现以上功能,就可以在list链表中只保留最新的10个数据,每次进来一个新数据就删除一个旧数据,每次就可以从链表中直接获取所需要的数据,极大的节省了各方面资源。
lpush key string:向名字为key的链表添加元素,注意添加的时候如果是同一个链表,那么key是相同的。
llen key:对应list的长度,key不存在的话返回0,如果类型不是list返回错误
rpop key:从链表的尾部删除元素,并返回删除元素
lrange key start end:返回指定区域内的元素,下标从0开始
rpush key string:从右边添加元素
lpop key:从左边删除元素
ltrim key start end:截取list,保留指定区域(开始结尾都包括)

Set类型操作 无重复元素
redis的set是string类型的无序集合
set元素的最大可以包含2的32次方-1的元素,42亿多
set集合除了最基本的增加删除操作,其他有用的操作还包含去并集(union),交集(insersection),差集(difference)。
集合set中的元素是不能重复的
**该类型应用场合:**qq好友推荐,A有朋友圈,B有朋友圈,但是AB不是朋友,需要对A的朋友圈和B的朋友圈做一个交际的计算,假设他们都有DF两个公共的朋友,也就是交集运算,那么我们可以将A推荐给B,将B推荐给A
sadd key member:添加一个string元素到key对应的set集合中,成功返回1,如果元素已经在集合中,返回0,对应的set不存在返回错误
sismember key member:查看member是不是key中的成员,不存在返回0,存在返回1
scard key:返回set中元素的个数
smove p1 p2 member:从p1对应的set中移除member并添加到p2对应的set中
sinter key1 key2…keyN:返回所有给定key的交集
sunion key1 key2…keyN:返回所有给定key的并集
sdiff key1 key2…keyN:返回所有给定key的差集,里面只有key1的,没有key2的,谁写在最前面,显示谁的
smembers key:返回给定key的元素

Sort Set排序集合类型 无重复元素
应用场合:获取热门帖子信息:select * from message order by backnum desc limit 5;按照回复量排序取前五
zadd key score(权) member(值):把权值为XX的数据添加到key的sortset排序集合中
这里我们回想一下我们上面的set集合,我们在不断的添加元素的时候,最后输出smembers key返回的结果是没有顺序的,这里我们使用zadd方法添加了若干元素进去,如果查看sortsort是否排序了?sortset是根据权值排序的
zrange key start end:类似lrange操作从集合中取指定区间的元素,返回的是有序结果
zrevrange key start end:同上,但是返回的结果是按照score逆序的,大的在上面
zremrangebyrank key min max 删除集合中排名在给定区间的元素(权值从小到大排序),删除最小的 min和max是从多少到多少的意思
zcard key:有多少个元素
zscore key element:返回给定元素的对应的sorce权值
zincrby key incr member:给指定元素增加多少权值
zrank key member:元素member权有低到高获得排名
zrerank key member:元素member权有高到底获得排名

持久化

redis为了内部数据的安全考虑,会把本身的数据以文件的形式保存到硬盘中一份,在服务器重启之后会自动把硬盘中的数据恢复到内存(redis)的里面
数据保存到硬盘的过程就成为“持久化”效果。
1.snap shotting快照持久化
一次性把redis中全部的数据保存一份在硬盘中,如果数据非常多(10G-20G)就不适合频繁该持久化操作。

redis目录下面有dump.rdb,redis在运行过程中快照持久化保留的数据文件

redis.conf文件里面具体设置了redis是如果做快照持久化的

save 900 1
save 300 10
save 60 10000  #60秒超过10000个key被修改,发起快照

2.append only file(AOF持久化)(精细持久化)
本质:**把用户执行的每个“写”指令都备份到文件中,**还原数据的时候就是执行具体写指令而已。默认关闭

开启AOF持久化(会清空内部的数据),所以安装好redis,首先开启AOF
redis.conf文件里面设置 appendonly yes,同样也可以设置备份频率
备份文件默认appendonly.aof文件
修改配置文件时候需要重新启动redis,**Apache都是这样。**启动后就会看到aof的备份文件
在这里插入图片描述
为aof备份做优化处理
对appendonly.aof内容优化压缩处理
如多个incr指令换成set指令

aof持久化与快照持久化是互补的关系,快照持久化是大时间段,aof是精细小时间段
配置文件文件目录中,还有支持并发测试的文件,可以直接在管理台通过指令来进行并发测试

主从模式

master服务器和slave服务器
master服务器负责写,写入到master服务器的数据其他slave服务器都可以看到同步到
slave服务器负责读,写到slave服务器的数据其他服务器看不到包括master服务器,所以slave服务器写数据没有意义
如果master服务器挂掉,slave服务器中的一台变为master服务器,交叉的主从库

redis与Memcache区别

1.不同点,集群不同
mm:通过客户端
redis:通过服务器主从模式实现集群
2.可以进行持久化
redis:通过数据文件
通过操作日志恢复
3.redis提供高级的数据结构
4.redis是单线程的,处理数据比较小的情况下没有太大的区别,处理大数据的时候mm性能更好,mm是多线程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值