首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

超强、超详细Redis入门教程

背景~~

随着互联网+和大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量,这个时候就需要一种能够快速存取数据的组件来缓解数据库服务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/

最新版本 : 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

设值: 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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180604A1QXAG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券