- N +

超强、超详细Redis入门教程

超强、超详细Redis入门教程原标题:超强、超详细Redis入门教程

导读:

背景~~随着互联网+和大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量,这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O的压力...

文章目录 [+]


背景~~


随着互联网+和大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量,这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O的压力 ,来解决系统性能上的瓶颈。

什么是Redis~~



Redis是一个开源的,高性能的,C语言开发,键值对(key-value)存储数据的NoSql数据库

NoSql: Not Only Sql 泛指非关系型数据库  Redis / MongoDB/Hbase

关系型数据库 : oracle mysql SqlServer


数据库应用的发展历史


1: 在互联网大数据时代来临前,企业的一些内部信息管理系统,一个单个数据库实例就可以应付系统的需求

单数据库实例

2: 随着系统访问量用户的增多,数据量的增大 ,单个数据库实例已经满足不了系统读取数据的需求

缓存(ehCache/MemCached)+数据库实例

3: 缓存可以缓解数据库的读取压力,但是数据量的写入压力持续增大,可以采取数据库主从进行读写分离

缓存+主从数据库+读写分离

4:  数据量再次增大 ,读写分离以后 ,主数据库的写库压力出现瓶颈

缓存 +主从数据库集群+读写分离 +分库分表

5 :互联网+大数据时代来临,关系型数据库不能很好的存取一些并发性大,实时性高而且格式不固定的数据

NoSql数据库 +主从数据库集群+读写分离 +分库分表


Redis有什么用~~


Redis的主要作用: 快速存取

以电商平台为例,Redis在系统架构中的一个位置


Redis的应用场景:

单点登陆/直播平台里面在线好友列表/抢购 秒杀/商品的排行榜/点赞/数据过期

Redis怎么用~~


官网地址: https://redis.io/

命令地址http://doc.redisfans.com/

最新版本 : 3.2.9

应用版本: 3.0.4


Redis的五大数据类型以及应用场景

List

k-v格式中 v的数据类型是List,其实类似java里面的LinkedList

把这个有序列表看成一根竹子,可以从两头插入数据

从左边插入记录 lpush commet:1 1 2 3

从右边插入记录 rpush comment:1 4 5 6

3  2  1  4  5  6

从左边弹出记录 lpop comment:1 1

从右边弹出记录 rpop comment:1 1

获取分页: lrange comment:1 start end

1.lrem key 删N个value

rpush list03 1 1 1 2 2 2 3 3 3 4 4 4 5 6 7

lrem list03 2 3   代表删掉2个3

lrange list03 0 -1

应用场景: 商品的评论表


String


k-v格式中 v的数据类型是String,一个redis中字符串value最多可以是512M

设值  set  key  value /mset k1 v1 mset k2 v2

incr k2 递增加1

decr k2 递减减1

 incrby  k2 3  k2加3

取值  get key

删值  del key

实际应用场景: 秒杀商品/点赞


Hash

k-v格式中 v的数据类型是hash,其实就是java里面的Map<Object,Object>

设值: hset mobile_huawei id 1  批量:hmset mobile_huawei id 1 name huaweip9 price 2999

取值: hget mobile_huawei id    批量:hgetall mobile_huawei

删值: del key

hexists customer id 如果存在返回1 不存在返回0

hkeys/hvals

实际应用场景:电商网站中的商品详细信息


set

k-v格式中 v的数据类型是set  和list不同的是:list是有序的 ,set就是无序的,且具有唯一性

sadd set01 1 1 2 2 3 3  会去掉重复添加

增  sadd friends:juran tds jungle aurocal yulouchun

删  srem friends:keven tds

查看 smember friends:juran

两个集合的交集 sinter friends:juran friends:tds

随机出栈 spop juran

应用场景: 微信朋友查看权限 /独立IP投票限制


Zset(sorted set)

k-v格式中 v的数据类型是zset 有序的set

增加 zadd mobile:sales 100 huawei 99 iphone 98 vivo 97 oppo

删除 zrem mobile:sales oppo

ZRANGEBYSCORE  mobile:sales 98 (100  不包含100

从小到大获取商品 :zrange  mobile:sales 0  10 从小到大  

withscores 带上分数

从大到小获取商品 :  zrevrange  mobile:sales 0  10

ZRANGEBYSCORE mobile:sales 97 100 limit 2 2  从第二条开始截取两条

应用场景: 商品的销售排行榜


Redis~~


Redis对事务的支持目前还比较简单,redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令

set age 33

multi   打开事务

set age 10

set age 20

exec   让命令按顺序执行

get age

discard 取消事务 其实就是清空事务的命令队列并退出事务上下文,也就是我们常说的事务回滚。

redis只支持简单的事务,mysql事务如果执行不成功会进行回滚。

multi

incr age

incr name

exec

Redis的持久化~~


简单说,数据从内存同步到硬盘

两种持久化方式

RDB方式

默认支持,在指定的时间间隔内,将内存中的数据集快照写入到磁盘

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

save 300 10

save 60 10000

AOF方式

日志的形式记录服务器处理的每一个操作,服务器启动之初,读取文件,重新构建数据库

3.无持久化    通过配置继用Redis持久化功能,Redis缓存机制

4.同时使用RDB和AOF

本文标题:超强、超详细Redis入门教程
本文链接:http://www.kyjszj.com/htzq/363.html
作者授权:除特别说明外,本文由 开源技术之家 原创编译并授权 开源技术之家 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。

有好的文章希望我们帮助分享和推广,猛戳这里我要投稿

返回列表
上一篇:
下一篇:

发表评论中国互联网举报中心

快捷回复:

    评论列表 (暂无评论,共189人参与)参与讨论

    还没有评论,来说两句吧...