网站规划与制作,黄页号码查询,pinterest设计网站,学装修设计师多少学费Redis 入门到精通#xff08;一#xff09;数据类型#xff08;1#xff09;
一 、Redis 入门到精通 基本介绍
1、Redis 基础 ( windows 环境 )
redis 入门数据类型通用命令Jedis
2、Redis 高级 ( linux 环境 )
持久化redis.conf 配置事务集群
3、Redis 应用 ( linux…Redis 入门到精通一数据类型1
一 、Redis 入门到精通 基本介绍
1、Redis 基础 ( windows 环境 )
redis 入门数据类型通用命令Jedis
2、Redis 高级 ( linux 环境 )
持久化redis.conf 配置事务集群
3、Redis 应用 ( linux 环境 )
企业级解决方案。
二 、redis 入门-Nosql 介绍
1、海量用户、高并发问题频发现象暴露出关系型数据库的缺点
性能瓶颈磁盘IO性能低下。 扩展瓶颈数据关系复杂扩展性差不便于大规模集群。 即采用 Nosql。
2、解决思路
降低磁盘IO次数越低越好——使用 内存存储。去除数据间关系越简单越好——不存储关系仅存储数据。
3、Nosql
1NoSQL即 Not-Only SQL 泛指非关系型的数据库作为关系型数据库的补充。 2Nosql 作用应对基于海量用户和海量数据前提下的数据处理问题。
3常见 Nosql 数据库 Redis memcache HBase MongoDB 4Nosql 特征 可扩容可伸缩 大数据量下高性能 灵活的数据模型 高可用
4、分析电商场景 在应对 海量用户、高并发问题时一般使用的 Nosql 解决方案 商品基本信息一般使用 MySQL 名称 价格 厂商 商品附加信息一般使用 MongoDB 描述 详情 评论 图片信息一般使用 分布式文件系统 搜索关键字一般使用 ES、Lucene、solr 热点信息一般使用 Redis、memcache、tair 高频 波段性
当然这只是一般情况下的解决方案具体以各个公司实际而会不同如下图 三 、redis 入门-redis 简介
1、Redis 概念
Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对key-value数据库。
2、redis 特征 数据间没有必然的关联关系 内部采用单线程机制进行工作 高性能。官方提供测试数据50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s。 多数据类型支持: 字符串类型 string 列表类型 list 散列类型 hash 集合类型 set 有序集合类型 sorted_set。 持久化支持。可以进行数据灾难恢复
3、Redis 的应用
为热点数据加速查询主要场景如热点商品、热点新闻、热点资讯、推广类等高访问量信息等。 任务队列如秒杀、抢购、购票排队等。 即时信息查询如各位排行榜、各类网站访问统计、公交到站信息、在线人数信息聊天室、网站、设备信号等。 时效性信息控制如验证码控制、投票控制等。 分布式数据共享如分布式集群架构中的 session 分离。 消息队列 分布式锁。
四、redis 入门-redis 下载安装与服务启动
1、Redis 的下载
1Linux 版适用于企业级开发 Redis 高级开始使用 以4.0 版本作为主版本
2Windows 版本适合零基础学习 Redis 入门使用 以 3.2 版本作为主版本 下载地址https://github.com/MSOpenTech/redis/tags
下载Redis-x64-3.2.100.zip
2、安装 Redis
绿色版本解压即安装。
3、Redis 核心文件
redis-server.exe 服务器启动命令 redis-cli.exe 命令行客户端 redis.windows.conf redis 核心配置文件 redis-benchmark.exe 性能测试工具 redis-check-aof.exe AOF 文件修复工具 redis-check-dump.exe RDB 文件检查工具快照持久化文件
4、启动 Redis 端口6379PID随机生成即 redis 实例对象id
双击运行
redis-server.exe 服务器启动命令redis-cli.exe 命令行客户端 五、redis 入门-redis 基础操作
1、信息添加
# 功能设置 key, value 数据
set key value # 范例
set name redisStudy2、信息查询
# 功能根据 key, 查询对应的 value 数据如果不存在返回空nil
get key# 范例
get name3、清除屏幕信息
# 功能清除屏幕中的信息
clear# 范例
clear4、退出客户端命令行模式
# 功能退出客户端
quit
exit
ESC# 范例
quit
exit
ESC5、帮助
# 功能获取命令帮助文档获取组中所有命令信息名称
help 命令名称
help 组名# 范例
help set
help get
help string六、redis 数据类型-数据类型简介
1、数据存储类型介绍–业务数据的特殊性–作为缓存使用
1原始业务功能设计
618活动双11活动排队购票
2运营平台监控到的突发高频访问数据
突发时政要闻被强势关注围观
3高频、复杂的统计数据
在线人投票排行榜
4系统功能优化或升级
单服务升级集群Session 管理Token 管理
2、redis 常用的5种数据类型
stringhashlistsetsorted_set
七、redis 数据类型-string 基本操作
1、redis 数据存储格式
redis 自身是一个 Map其中所有的数据都是采用 key: value 的形式存储。数据类型指的是存储的数据的类型也就是 value 部分的类型key 部分永远都是字符串。
3-redis存储空间.png
2、string 类型
存储的数据:单个数据最简单的数据存储类型也是最常用的数据存储类型。存储数据的格式:一个存储空间保存一个数据。存储内容:通常使用字符串如果字符串以整数的形式展示可以作为数字操作使用。
3、string 类型数据的基本操作
# 添加/修改数据
set key value # 范例
set name redisStudy# 获取数据
get key# 范例
get name# 删除数据
del key# 范例
del name# 添加/修改多个数据
mset key1 value1 key2 value2 ... # 范例
mset a 1 b 2 c 3 # 获取多个数据
mget key1 key2 key3...# 范例
mget a b c # 返回 1 2 3 # 获取数据字符个数字符串长度
strlen key # 范例
set name redisStudy
strlen name # 会返回 10# 追加信息到原始信息后部如果原始信息存在就追加否则新建
append key value# 范例
set name redis
strlen name # 会返回 5
append name study
strlen name # 会返回 10
八、redis 数据类型-单指令操作与多指令操作的选择之惑
单指令操作set key value与多指令操作mset key1 value1 key2 value2… 根据执行过程和实际业务选择最优性能。
九、redis 数据类型-数值增减操作
1、string 类型数据的扩展操作–业务场景
大型企业级应用中分表操作是基本操作使用多张表存储同类型数据但是对应的主键id 必须保证统一性不能重复。Oracle 数据库具有 sequence 设定可以解决该问题但是 MySQL 数据库并不具有类似的机制那么如何解决?
解决方案可以使用 redis 的自增incr key, incrby key increment自减decr key,decrby key increment。
2、string 类型数据的扩展操作–设置数值数据自增自减操作
# 自增 1
incr key # 设置数值数据增加指定范围的值
incrby key increment
incrbyfloat key increment# 自减 -1
decr key # 设置数值数据减少指定范围的值
decrby key increment # 范例
set num 10
incr num
get num # 返回 11
incr num
get num # 返回 12
incr num
get num # 返回 13decr num
get num # 返回 12
decr num
get num # 返回 11
decr num
get num # 返回 10incrby num 3
get num # 返回 13
incrby num 5
get num # 返回 18
incrby num 2
get num # 返回 20decrby num 10
get num # 返回 10
decrby num 5
get num # 返回 5
decrby num 2
get num # 返回 3incrbyfloat num 1.5
get num # 返回 4.5incrbyfloat num 2.5
get num # 返回 7
3、string 类型数据的扩展操作–string 作为数值操作
string 在 redis 内部存储默认就是一个字符串当遇到增减类操作 incrdecr 时会转成数值型进行计算。redis 所有的操作都是原子性的采用单线程处理所有业务命令是一个一个执行的因此无需考虑并发带来的数据影响。注意:按数值进行操作的数据如果原始数据不能转成数值或超越了redis 数值上限范围将报错.9223372036854775807(java中long型数据最大值Long.MAX VALUE)。
4、redis 数据类型-数值增减操作 的应用
redis 用于控制数据库表主键 id为数据库表主键提供生成策略保障数据库表的主键唯一性此方案适用于所有数据库且支持数据库集群。
十、redis 数据类型-数据时效性设置
1、string 类型数据的扩展操作–业务场景
例如“最强女生”启动海选投票只能通过微信投票每个微信号每4 小时只能投1票。 电商商家开启热门商品推荐热门商品不能一直处于热门期每种商品热门期维持3天3天后自动取消热门。 新闻网站会出现热点新闻热点新闻最大的特征是时效性如何自动控制热点新闻的时效性
解决方案使用 redis 数据时效性设置。
2、redis 设置数据具有指定的生命周期
# 时效 多少 秒
setex key seconds value
# 时效 多少 毫秒
psetex key milliseconds value # 范例
setex tel 10 5
get tel # 返回 510秒后失效
get tel # 返回 nil已失效3、redis 数据时效性 应用
redis 控制数据的生命周期通过数据是否失效控制业务行为适用于所有具有时效性限定控制的操作。
十一、redis 数据类型 – string 类型使用注意事项与 key 的命名规范
1、redis 数据类型string 类型数据操作的注意事项
1数据操作不成功的反馈与数据正常操作之间的差异 表示运行结果是否成功 (integer)0 -- false 失败 (integer)1 -- true 成功 表示运行结果值 (integer)3 -- 3 3个 (integer)1 -- 1 1个
2数据未获取到 (nil)等同于nul。
3数据最大存储量512MB
4数值计算最大范围(java 中的 long 的最大值) 9223372036854775807。
2、string 类型应用场景业务场景
主页高频访问信息显示控制例如新浪微博大V主页显示粉丝数与微博数量两个数据如何控制 解决方案
1在 redis 中为大V用户设定用户信息以用户主键和属性值作为 key后台设定定时刷新策略即可。
# 设置粉丝数
set user:id:00789:fans 12210947# 设置博客文章数
set user:id:00789:blogs 6164# 设置关注数
set user:id:00789:focuss 83
2在 redis 中以 json 格式存储大V用户信息定时刷新(也可以使用 hash 类型)
# 一次性设置粉丝数、博客文章数、关注数
set user:00789:{id:00789,name:春晚,fans:12210862,blogs:6164,focus:83}3、redis 应用场景
1redis 用于控制数据库表主键 id为数据库表主键提供生成策略保障数据库表的主键唯一性此方案适用于所有数据库且支持数据库集群。
2redis 控制数据的生命周期通过数据是否失效控制业务行为适用于所有具有时效性限定控制的操作。
3redis 可应用于各种结构型和非结构型高热度数据访问加速。
4、key 的设置约定数据库中的热点数据 key 命名惯例
表名:主键名:主键值:字段名eg1:order:id:29437595:nameeg2:equip:id:390472345:typeeg3:news:id:202004150:title