Redis
Will Jay
这个作者很懒,什么都没留下…
展开
-
Redis(22)—— Redis缓存穿透和雪崩
Redis缓存穿透和雪崩服务的高可用问题!在这里我们不会详细的区分析解决方案的底层!Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一 些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据 的一致性要求很高,那么就不能使用缓存。另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较流行的解决方案。缓存穿透缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存原创 2020-06-01 22:56:15 · 236 阅读 · 0 评论 -
Redis(21)—— 哨兵模式
哨兵模式(自动选举老大的模式)概述主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工 干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑 哨兵模式。Redis从2.8开始正式提供了Sentinel(哨兵) 架构来解决这个问题。谋朝篡位的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独 立运行。其原原创 2020-06-01 22:53:01 · 498 阅读 · 0 评论 -
Redis(20)—— Redis主从复制
Redis主从复制概念主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave 以读为主。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。()主从复制的作用主要包括:1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式原创 2020-06-01 22:48:39 · 328 阅读 · 0 评论 -
Redis(19)—— Redis发布订阅
Redis发布订阅Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。微信、微博、关注系统!Redis 客户端可以订阅任意数量的频道。订阅/发布消息图:第一个:消息发送者, 第二个:频道 第三个:消息订阅者!下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发原创 2020-06-01 22:42:54 · 307 阅读 · 0 评论 -
Redis(18)—— Redis持久化
Redis持久化面试和工作,持久化都是重点!Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能!RDB(Redis DataBase)什么是RDB在主从复制中,rdb就是备用了!从机上面!在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快 照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文原创 2020-06-01 22:39:34 · 159 阅读 · 0 评论 -
Redis(17)——Redis.conf详解
Redis.conf详解启动的时候,就通过配置文件来启动!工作中,一些小小的配置,可以让你脱颖而出!单位1、配置文件 unit单位 对大小写不敏感!包含网络bind 127.0.0.1 # 绑定的ip protected-mode yes # 保护模式 port 6379 # 端口设置通用 GENERALdaemonize yes # 以守护进程的方式运行,默认是 no,我们需要自己开启为yes!pidfile /var/run/redis_6379.pid # 如果以后台的原创 2020-06-01 22:19:41 · 123 阅读 · 0 评论 -
Redis(16)——悲观锁和乐观锁
悲观锁:很悲观,认为什么时候都会出问题,无论做什么都会加锁!乐观锁:很乐观,认为什么时候都不会出问题,所以不会上锁! 更新数据的时候去判断一下,在此期间是否有人修改过这个数据,获取version更新的时候比较 versionedis测监视测试# 正常执行成功!127.0.0.1:6379> set money 100 OK127.0.0.1:6379> set out 0 OK127.0.0.1:6379> watch money # 监视 money 对象OK12原创 2020-06-01 22:15:09 · 236 阅读 · 0 评论 -
Redis(15)—— 事务
事务Redis 事务本质:一组命令的集合! 一个事务中的所有命令都会被序列化,在事务执行过程的中,会按照顺序执行!一次性、顺序性、排他性!执行一些列的命令!------ 队列 set set set 执行------Redis事务没有没有隔离级别的概念!所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行!ExecRedis单条命令式保存原子性的,但是事务不保证原子性!redis的事务:开启事务(multi)命令入队(…)执行事务(exec)*** 正常执行事务!原创 2020-06-01 22:03:44 · 146 阅读 · 0 评论 -
Redis(14)—— Hyperloglog
Bitmap为什么其他教程都不喜欢讲这些?这些在生活中或者开发中,都有十分多的应用场景,学习了,就是就 是多一个思路!技多不压身!位存储统计用户信息,活跃,不活跃! 登录 、 未登录! 打卡,365打卡! 两个状态的,都可以使用Bitmaps!Bitmap 位图,数据结构! 都是操作二进制位来进行记录,就只有0 和 1 两个状态!365 天 = 365 bit 1字节 = 8bit 46 个字节左右!测试使用bitmap 来记录 周一到周日的打卡! 周一:1 周二:0 周三:0 周四:原创 2020-06-01 21:48:27 · 113 阅读 · 0 评论 -
Redis(13)—— Hyperloglog
Hyperloglog什么是基数?A {1,3,5,7,8,7}B{1,3,5,7,8}基数(不重复的元素) = 5,可以接受误差!简介Redis 2.8.9 版本就更新了 Hyperloglog 数据结构!Redis Hyperloglog 基数统计的算法!优点:占用的内存是固定,2^64 不同的元素的技术,只需要废 12KB内存!如果要从内存角度来比较的话 Hyperloglog 首选!网页的 UV (一个人访问一个网站多次,但是还是算作一个人!)传统的方式, set 保存用户的id原创 2020-06-01 21:46:30 · 166 阅读 · 0 评论 -
Redis(12)—— Geospatial 地理位置
Geospatial 地理位置朋友的定位,附近的人,打车距离计算?Redis 的 Geo 在Redis3.2 版本就推出了! 这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人!可以查询一些测试数据:http://www.jsons.cn/lngcodeinfo/0706D99C19A781A3/ 只有 六个命令:官方文档:https://www.redis.net.cn/order/3685.html# getadd 添加地理位置# 规则:两级无法直接添加,我们一般会下载城市数据,原创 2020-06-01 21:44:43 · 272 阅读 · 0 评论 -
Redis(11)—— Redis有序集合数据类型
在set的基础上,增加了一个值,set k1 v1 zset k1 score1 v1127.0.0.1:6379> zadd myset 1 one # 添加一个值(integer) 1127.0.0.1:6379> zadd myset 2 two 3 three # 添加多个值(integer) 2127.0.0.1:6379> ZRANGE myset 0 -11)"one"2)"two"3)"three"##########################原创 2020-06-01 17:21:11 · 130 阅读 · 0 评论 -
Redis(10)—— Redis哈希数据类型
Hash(哈希)Map集合,key-map! 时候这个值是一个map集合! 本质和String类型没有太大区别,还是一个简单的key-vlaue!set myhash field kuangshen##########################################################################127.0.0.1:6379> hset myhash field1 kuangshen # set一个具体 key-vlaue (integer) 1原创 2020-06-01 17:19:43 · 107 阅读 · 0 评论 -
Redis(9)—— Redis集合数据类型
Set(集合)set中的值是不能重读的!##########################################################################127.0.0.1:6379> sadd myset "hello" # set集合中添加匀速(integer) 1127.0.0.1:6379> sadd myset "kuangshen" (integer) 1127.0.0.1:6379> sadd myset "lovekuangshe原创 2020-06-01 17:17:36 · 117 阅读 · 0 评论 -
Redis(8)—— Redis列表数据类型
List(列表)在redis里面,我们可以把list玩成 ,栈、队列、阻塞队列! 所有的list命令都是用l开头的,Redis不区分大小命令##########################################################################127.0.0.1:6379> LPUSH list one # 将一个值或者多个值,插入到列表头部 (左)(integer) 1127.0.0.1:6379> LPUSH list two(int原创 2020-06-01 17:16:11 · 116 阅读 · 0 评论 -
Redis(7)—— Redis字符串数据类型
## String(字符串)##########################################################################127.0.0.1:6379> set key1 v1 # 设置值OK127.0.0.1:6379> get key1 # 获得值"v1"127.0.0.1:6379> keys # 获得所有的key1) "key1"127.0.0.1:6379> EXISTS key1 # 判断某一个key是原创 2020-06-01 16:49:05 · 106 阅读 · 0 评论 -
Redis(6)—— Redis-Key的基本命令
Redis-Key127.0.0.1:6379> keys # 查看所有的key (empty list or set)127.0.0.1:6379> set name kuangshen # set key OK127.0.0.1:6379> keys1) "name" 127.0.0.1:6379> set age 1 OK127.0.0.1:6379> keys1)"age"2)"name"127.0.0.1:6379> EXISTS name #原创 2020-06-01 16:33:20 · 159 阅读 · 0 评论 -
Redis(5)—— 基础的知识
基础的知识redis默认有16个数据库默认使用的是第0个可以使用 select 进行切换数据库!127.0.0.1:6379> select 3 # 切换数据库OK127.0.0.1:6379[3]> DBSIZE # 查看DB大小!(integer) 0127.0.0.1:6379[3]> keys # 查看数据库所有的key1) "name"清除当前数据库 flushdb清除全部数据库的内容 FLUSHALL127.0.0.1:6379[3]> f原创 2020-06-01 16:17:47 · 116 阅读 · 0 评论 -
Redis(4)—— 压力测试工具redis-benchmark
测试性能redis-benchmark 是一个压力测试工具! 官方自带的性能测试工具!redis-benchmark 命令参数!我们来简单测试下:# 测试:100个并发连接 100000请求redis-benchmark -h localhost -p 6379 -c 100 -n 100000如何查看这些分析呢?...原创 2020-06-01 11:10:50 · 207 阅读 · 0 评论 -
Redis(3)—— Redis在Linux下的安装
1、下载安装包!redis-5.0.8.tar.gz官网:https://redis.io/2、解压Redis的安装包! 程序/opt3、进入解压后的文件,可以看到我们redis的配置文件4、基本的环境安装yum install gcc-c++makemake instal5、redis的默认安装路径 /usr/local/bin6、将redis配置文件。复制到我们当前目录下7、redis默认不是后台启动的,修改配置文件!8、启动Redis服务!9、使用redis-原创 2020-06-01 10:38:41 · 224 阅读 · 0 评论 -
Redis(2)—— Redis入门
概述什么是redisRedis(Remote Dictionary Server ),即远程字典服务 !是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库, 并提供多种语言的API。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。免费和开源!是当下最热门的 NoSQL 技术之一!也被人们称之为结构化数据库!Redis能干什么1、内存存储、持久化,内存中是断电原创 2020-06-01 10:29:42 · 92 阅读 · 0 评论 -
Redis(1)—— NoSQL概述
什么是NoSQLNoSQL = Not Only SQL (不仅仅是SQL) 关系型数据库:表格 ,行 ,列泛指非关系型数据库的,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其 是超大规模的高并发的社区! 暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的,而且是我们当下必须要掌握的一个技术!很多的数据类型用户的个人信息,社交网络,地理位置。这些数据类型的存储不需要一个固定的格式! 不需要多月的操作就可以横向扩展的 !原创 2020-06-01 10:17:47 · 128 阅读 · 0 评论