Redis

redis 使用场景

£可爱£侵袭症+ 提交于 2020-10-28 10:28:36
Redis 数据结构使用场景 一、redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码。目前目标是吃透 redis 的数据结构。我们都知道,在 redis 中一共有5种数据结构,那每种数据结构的使用场景都是什么呢? String——字符串 Hash——字典 List——列表 Set——集合 Sorted Set——有序集合 下面我们就来简单说明一下它们各自的使用场景: 1. String——字符串 String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候encoding 就是整型,其他都存储在 sdshdr 当做字符串)。使用 Strings 类型,可以完全实现目前 Memcached 的功能,并且效率更高。还可以享受 Redis 的定时持久化(可以选择 RDB 模式或者 AOF 模式),操作日志及 Replication 等功能。除了提供与 Memcached 一样的 get、set、incr、decr 等操作外,Redis 还提供了下面一些操作: LEN niushuai :O(1)获取字符串长度 APPEND niushuai redis :往字符串 append 内容,而且采用智能分配内存

通俗易懂讲解epoll

心不动则不痛 提交于 2020-10-28 10:25:04
epoll 的本质是什么? 从事服务端开发,少不了要接触网络编程。epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。 epoll 很重要,但是 epoll 与 select 的区别是什么呢?epoll 高效的原因是什么? 网上虽然也有不少讲解 epoll 的文章,但要么是过于浅显,或者陷入源码解析,很少能有通俗易懂的。笔者于是决定编写此文,让缺乏专业背景知识的读者也能够明白 epoll 的原理。 文章核心思想是:要让读者清晰明白 epoll 为什么性能好。 本文会从网卡接收数据的流程讲起,串联起 CPU 中断、操作系统进程调度等知识;再一步步分析阻塞接收数据、select 到 epoll 的进化过程;最后探究 epoll 的实现细节。 一、从网卡接收数据说起 下边是一个典型的计算机结构图,计算机由 CPU、存储器(内存)与网络接口等部件组成,了解 epoll 本质的第一步,要从硬件的角度看计算机怎样接收网络数据。 计算机结构图(图片来源:Linux内核完全注释之微型计算机组成结构) 下图展示了网卡接收数据的过程。 在 ① 阶段,网卡收到网线传来的数据; 经过 ② 阶段的硬件电路的传输; 最终 ③ 阶段将数据写入到内存中的某个地址上。 这个过程涉及到 DMA 传输、IO

揭秘 “全网影视 VIP 卡” 的背后产业链

ε祈祈猫儿з 提交于 2020-10-28 10:09:01
程序员的成长之路 互联网/程序员/成长/职场 关注 阅读本文大概需要 4.8 分钟。 祝大家周末愉快,周末不发技术文章~ 三件事,说下: 1、前几天建立了一个学习交流群,二维码在文末,满人后可加我微信,拉你进群。 2、本篇文章为知识星球精华文章中的一篇,文末附有加入方式。 3、给大家推荐一个投资理财类型的公众号,适合零基础、初中级的童鞋,目前刚创建处于筹备阶段,还未发布文章,感兴趣的赶紧去关注一波。 正文: 最近几年「影视站」、「资源站」、「解析接口」、「影视APP」不断的冒出来,尤其是今年年初,各大春节档电影,上映几天就有了各种盗版。 去年有段时间,身边影视 VIP 卡卖的很火热,包括很多平台上有人称销售这个所赚不菲,今天来分析一下这个到底是什么。 1.影视站 这种网站眼不眼熟,有时候待在家中,上上网,找找电影的时候就派上用场了。 由于很多热门电影需要电影院才能看,又不能每个电影都买票跑电影院去看(时间、金钱不允许~),只能找一些免费的抢先版来凑合。 无意中找到了一个网站,里面每日更新资源、电影电视剧也是全网里最清晰的,简直不要太爱它。 那个网站叫”yy6080新视觉影院“。 这个网站算得上是当前影视站的鼻祖了,影视站是近两三年才火起来的。 去百度搜索 ” VIP 影视导航“ 会有约 23,200,000 个结果。 随便点击一个进去会发现里面充斥个各种广告、体验不人性化

Redis使用场景

空扰寡人 提交于 2020-10-28 10:02:19
Redis使用场景 计数器,具体原理就是利用incrby命令,具体实现可以参考 这里 限时业务,由于Redis可以设置数据的过期时间,到期会自动删除,因此可以使用在限时的优惠活动业务中; 队列,利用Redis中的List数据结构中的bpop和rpop的命令,可以实现队列; 分布式锁,利用Redis中的setnx命令实现,如果这个命令已经存在则不进行任何操作,可以理解成如果设置了锁则不再设置; 排行榜,利用Redis中的ZSET数据结构,获取对应排名的成员; 分页,通过*_range的命令可以实现; 模糊搜索,通过scan指定的匹配项来完成; 点赞、好友等互相关系的存储,利用set数据结构每个人存储对应的用户集合,还可以很方便的交集的命令计算出共同好友; 缓存,对热点数据的缓存,提高访问速度; 数据库,比如session的信息都存储在Redis中而非数据库中,可以提高访问速度; 来源: oschina 链接: https://my.oschina.net/u/4303197/blog/3295048

centos7安装redis

穿精又带淫゛_ 提交于 2020-10-28 08:52:41
1、先分别安装gcc和tcl yum -y install gcc yum -y install tcl 2、升级gcc yum -y install centos-release-scl yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils scl enable devtoolset-9 bash 3、下载并安装redis cd /opt wget http://download.redis.io/releases/redis-6.0.8.tar.gz tar xzf redis-6.0.8.tar.gz cd redis-6.0.8 make 显示如上结果表示编译已经完成,/opt/redis-6.0.8/下会生成一个src目录 4、启动redis服务 cd src ./redis-server 注意这种方式启动 redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。 cd src ./redis-server ../redis.conf 5、测试交互 cd src ./redis-cli 来源: oschina 链接: https://my.oschina.net/u/4392473/blog/4691757

Java程序员非要进大厂才能拿到年薪50W+?

余生颓废 提交于 2020-10-28 08:42:29
不想当将军的兵不是好兵,就程序猿不想当架构师就不是好的程序员! Java架构师主要需要做哪些工作呢? 1、负责设计和搭建软件系统架构(平台、数据库、接口和应用架构等),解决开发中各种系统架构问题。 2、优化现有系统的性能,解决软件系统平台关键技术问题攻关、核心功能模块设计、核心代码开发。 3、在项目需求不断细化的工程中校正整体的架构设计,以及详细模块拆分设计。 4、营造技术学习氛围,带领团队不断完善开发开发方法及流程,提升开发效率与质量,加强技术标准及规范。 5、带领团队攻克例如大数据量、高并发、高稳定性等带来的各种挑战及技术难关。 6、责任心强,有团队合作精神,工作认真负责高效并具有一定抗压能力。 7、参与讨论公司产品发展方向,完整的规划和把握产品研发架构。 Java架构师要学习哪些知识呢? 希望以下的学习路线能对你有帮助 并发编程 JAVA内存模型(JMM) java当中的线程通讯和消息传递 什么是重排序和顺序一致性?Happens-Before?As-If-Serial? Synchronized的概念和分析 同步、重量级锁以及Synchronized的原理分析 自旋锁、偏向锁、轻量级锁、重量级锁的概念、使用以及如何来优化他们 Volatile和DCL的知识 Volatile的使用场景和Volatile实现机制、内存语义、内存模型 DCL的单例模式,什么是DCL

什么是redis,redis简介

百般思念 提交于 2020-10-28 08:18:41
redis是一个key-value 存储系统 。包括string(字符串)、list( 链表 )、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。 高可用分布式集群 一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响。 停止服务的原因可能由于网卡、路由器、机房、CPU负载过高、内存溢出、自然灾害等不可预期的原因导致,在很多时候也称单点问题。 (1)解决单点问题主要有2种方式: 主备方式 这种通常是一台主机、一台或多台备机,在正常情况下主机对外提供服务,并把数据同步到备机,当主机宕机后,备机立刻开始服务。 主从方式 这种采取一主多从的办法,主从之间进行数据同步。 当Master宕机后,通过选举算法(Paxos、Raft)从slave中选举出新Master继续对外提供服务,主机恢复后以slave的身份重新加入。 主从另一个目的是进行读写分离,这是当单机读写压力过高的一种通用型解决方案。 其主机的角色只提供写操作或少量的读,把多余读请求通过负载均衡算法分流到单个或多个slave服务器上。 二,分布式 分布式(distributed), 是当业务量、数据量增加时,可以通过任意增加减少服务器数量来解决问题。 集群时代 至少部署两台Redis服务器构成一个小的集群,主要有2个目的: 高可用性

听说,你的Loki还是单体?(下篇)

自作多情 提交于 2020-10-28 08:18:28
正文共729字 预计阅读时间:2分钟😂 相信大家看过 《听说,你的Loki还是单体?(上篇)》 之后对Loki的分布式架构有了一定的认识 ,那么本篇主要就是对上篇内容的实践。小白主要提供 docker-compose 和 helm 两种方式将部署Loki集群的Demo版本。 在正式部署之前,我们还是先来看下Loki整体架构如下图: 我们本次部署清单里面主要涉及到的组件如下: 组件 副本数 说明 Cassandra 1 Loki Index存储 Minio 1 Loki S3存储 Consul 1 Loki 组件状态和哈希环存储 Redis 1 Loki 缓存 Gateway 2 Loki 网关 Distributor 3 Loki 组件 Ingester 3 Loki 组件 Querier 3 Loki 组件 Query-Frontend 2 Loki 组件 Table-Manager 1 Loki 组件 下载部署代码 $ git clone https://github.com/CloudXiaobai/loki-cluster-deploy.git 声明:以下部署均适用于demo环境,大家切勿直接用于生产环境 对于生产环境,请务必先解决Cassandra和Consul服务的高可用 通过docker-compose部署 启动服务 $ cd loki-cluster-deploy

BeetleX之Websocket协议分析详解

你离开我真会死。 提交于 2020-10-28 07:31:06
Websocket应用协议已经普及多年了,它是HTTP1.1的内部升级协议,主要作用是补充HTTP1.1无法灵活地主动推送消息给客户端的缺陷问题。在这里主要介绍一下使用组件如何扩展一个完整的Websocket协议。 协议介绍 Websocket并不复杂,但协议文档内容还是很全面的,以下是协议原文 https://tools.ietf.org/html/rfc6455。其实一个简单的图可以看出Websocket协议结构。 在这里主要介绍组件是如何实现的就不详细介绍内容了。 存储顺序 在协议中有一个地方需要关注存储顺序,那就是消息长度描述。不同语言平台对于基础值类型的存储顺序都不一样分别是:大端和小端。这个协议使用的是大端存储顺序,但.NET则是使用小端存储顺序;所以使用组件解Weboskcet协议前要更改一下流读写的存储顺序。 IServer.Options.LittleEndian = false ; 组件可以通过配置来统一更改网络流针对大小端读写配置,应用中也可以默认用小端读出来后再移位转换也是可以。 分析状态 虽然Websocket已经有协议描述,但在分析过程中还是需要一些状态来处理。在TCP流中无法知道当前buffer里的情况,有可能不到一个消息帧,或存在多个消息帧;更有可能当前流的尾部可能只两个字节内容的playload len 127的情况;为了应对存在不同状态的网络流

架构师眼中的高并发架构

梦想与她 提交于 2020-10-28 06:55:13
点击上方 "IT牧场" ,选择 "设为星标" 技术干货每日送达! 责编:乐乐 | 链接:my.oschina.net/u/3772106/blog/1793561 00 前言 高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。 为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适合自己业务场景的高并发处理方案。 在电商相关产品开发的这些年,我有幸的遇到了并发下的各种坑,这一路摸爬滚打过来有着不少的血泪史,这里进行的总结,作为自己的归档记录,同时分享给大家。 01 服务器架构 业务从发展的初期到逐渐成熟,服务器架构也是从相对单一到集群,再到分布式服务。 一个可以支持高并发的服务少不了好的服务器架构,需要有均衡负载,数据库需要主从集群,nosql缓存需要主从集群,静态文件需要上传cdn,这些都是能让业务程序流畅运行的强大后盾。 服务器这块多是需要运维人员来配合搭建,具体我就不多说了,点到为止。 大致需要用到的服务器架构如下: 服务器 均衡负载(如:nginx,阿里云SLB) 资源监控 分布式 数据库 主从分离,集群 DBA 表优化,索引优化,等 分布式 nosql 主从分离,集群 主从分离,集群 主从分离,集群 redis mongodb memcache cdn html css js