redis
文章平均质量分 74
redis
韩家小志
这个作者很懒,什么都没留下…
展开
-
Redis--线程安全问题
Redis线程安全问题我们之前说Redis是一个高并发高性能的内存数据库那么Redis是否存在线程安全问题呢?答案是不存在!因为Redis6.0之前都是单线程的!但是利用的IO多路复用技术 + 底层是C语言实现的, 所以数据还是很快这样就避免了线程安全问题, 保证了操作的原子性,对于80%的公司来说,单线程的Redis已经足够使用了(注意我们说的单线程是对外服务,操作数据的线程只有一个, 后台进程做备份什么的不算在内的…)注意:Redis6.0之后支持多线程了但是默认不开启, 如果原创 2021-03-11 15:15:34 · 1806 阅读 · 0 评论 -
Redis--事务
Redis事务和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制。Redis中事务的实现特征:1). 在事务中的所有命令都将会被串行化的顺序执行,事务执行期间,Redis不会再为其它客户端的请求提供任何服务。2). 我们可以通过MULTI命令开启一个事务,可以将其理解为"BEGIN TRANSACTION"语句。在该语句之后执行的命令都将被视为事务之内的操作,最后我们可以通过执行EXEC/DISCARD命令来提交/回滚该事务内的所有操作。这两个Redis命令可被视为等原创 2021-03-11 15:15:23 · 86 阅读 · 0 评论 -
redis--Redis发布订阅
Redis发布订阅Redis也可以实现发布订阅消息模式但是不如Kafka专业,所以仅仅了解一下即可有点类似于微信公众号订阅A用户订阅了xx公众号那么只要xx公众号发布了新的文章/消息, A用户就可以接收到以下实例演示了发布订阅是如何工作的。在我们实例中我们创建了订阅频道名为 redisChat:node01:6379> SUBSCRIBE redisChatReading messages... (press Ctrl-C to quit)1) "subscribe"2)原创 2021-03-11 15:15:09 · 127 阅读 · 0 评论 -
Redis--集群-Cluster-真正的/终极版的集群
集群-Cluster-真正的/终极版的集群为什么需要Redis-ClusterRedis-Cluster的原理是什么Redis-Cluster的特点如何配置Redis-Cluster注意准备工作修改/添加配置文件启动Redis进程安装ruby运行环境创建redis集群测试集群集群管理--了解--运维的活JavaAPI连接Redis-Cluster问题解决-Redis-Cluster集群环境为什么需要Redis-Cluster之前的Redis集群-主从+哨兵 可以满足大多数应用场景但是会存在一个问题:原创 2021-03-11 15:14:58 · 306 阅读 · 0 评论 -
Redis--集群-哨兵机制
哨兵机制为什么需要哨兵机制哨兵机制的原理是什么如何配置哨兵机制总结问题JavaAPI连接主从+ 哨兵为什么需要哨兵机制在上面讲到的Redis集群-主从复制模式下可以实现容灾备份和读写分离但是做不到真正的高可用如Master挂了,整个集群就只能提供读服务了, 不能够提供写服务所以需要有一个新的方案来解决这个问题这个方案就是Redis提出的哨兵机制Sentinel哨兵机制的原理是什么如下图:在配置好了Master-Slave的基础之上,再增加一些哨兵进程用来监控各个节点(主要监控当前原创 2021-03-11 15:14:40 · 136 阅读 · 0 评论 -
Redis--集群-主从复制
集群-主从复制为什么需要主从复制主从复制的原理是什么如何配置主从复制为什么需要主从复制之前的redis都是单机版的,虽然配置了RDB+AOF可以保证数据安全,但是当该台redis挂掉的时候redis的恢复过程中,是不可以对外提供服务的所以为了让redis可以做到高可用,也就是可以一直对外提供读服务,那么就需要做主从复制主从复制总的来说有如下功能1.容灾备份, 主服务器上的数据会备份到从服务器上2.读写分离,主服务器可以写可以读,但是一般只负责写, 从服务器只可以读主从复制的原理是什原创 2021-03-11 15:14:29 · 78 阅读 · 0 评论 -
Redis--持久化
持久化Redis持久化两种方式RDB(默认)AOF(工作用)为什么需要持久化持久化策略-RDBRDB原理RDB的优点RDB的缺点RDB的配置持久化策略-AOFAOF原理AOF优点AOF缺点AOF的配置Redis持久化两种方式RDB(默认)定期执行快照,全量dump内存数据到磁盘优点:恢复快(全量)速度快(二进制)缺点:定期生成,可能丢失数据(定期执行)二级制文件不易读(二级制)可能因为子进程影响主进程的性能(全量)AOF(工作用)将更改的命令按照同步方式追加到AOF原创 2021-03-11 15:14:17 · 90 阅读 · 0 评论 -
Redis--JavaAPI
JavaAPI客户端选择环境准备入门案例jedis连接池抽取jedis工具类各种数据类型测试客户端选择https://redis.io/clients我们Java开发中一般都选用jedis客户端工具,因为它小巧且功能完整,更为重要的是api和redis的命令基本保持一致Jedis同样也是托管在github上,地址:https://github.com/xetorthio/jedis环境准备 <properties> <maven.compiler.sou原创 2021-03-09 20:57:20 · 136 阅读 · 0 评论 -
redis--其他命令-了解
其他命令-了解命令列表实例扩展-应用场景命令列表命令原型时间复杂度命令描述返回值KEYS patternO(N)时间复杂度中的N表示数据库中Key的数量。获取所有匹配pattern参数的Keys。需要说明的是,在我们的正常操作中应该尽量避免对该命令的调用,因为对于大型数据库而言,该命令是非常耗时的,对Redis服务器的性能打击也是比较大的。pattern支持glob-style的通配符格式,如*表示任意一个或多个字符,?表示任意字符,[abc]表示方括号中任意一个字母。匹配原创 2021-03-09 20:57:06 · 65 阅读 · 0 评论 -
redis--v类型Hash
Hash类型介绍命令列表命令实例扩展-应用场景类型介绍Redis中的hash一般用来存储对象如: key是对象的id, value是一个HashMap ,hashmap 中的key/field是对象的属性名, hashmap 中的value是对象属性名对应的属性值补充:Java中的HashMap的底层:数组 + 链表 (链表长度>8之后, 转换红黑树)https://blog.csdn.net/woshimaxiao1/article/details/83661464命令原创 2021-03-09 20:56:55 · 153 阅读 · 0 评论 -
redis--v类型ZSet
ZSet类型介绍命令列表命令实例扩展-应用场景类型介绍Redis中的ZSet就是SortedSet有序Set, 和Java中的TreeSet类似注意:Redis中的ZSet通过一个Score分值来保证顺序ZSet的其他特点和Set一样, 如不能存重复值, 但是Score可以是重复的命令列表命令原型时间复杂度命令描述返回值ZADD key score member scoreO(log(N))时间复杂度中的N表示Sorted-Sets中成员的数量。添加参数中原创 2021-03-09 20:56:42 · 145 阅读 · 0 评论 -
redis--v类型Set
Set类型介绍命令列表命令实例扩展-应用场景类型介绍Redis中的Set类似于Java中的HashSet, 里面可以存放很多不重复的元素,也就是说可以去重,但是是无序的还需要特别注意的是Redis中的Set也支持多种集合运算,如求交集,并集,差集…命令列表命令原型时间复杂度命令描述返回值SADDkey member [member …]O(N)时间复杂度中的N表示操作的成员数量。如果在插入的过程用,参数中有的成员在Set中已经存在,该成员将被忽略,而其它成员仍将会被原创 2021-03-09 20:56:31 · 270 阅读 · 0 评论 -
redis--v类型List
List类型介绍命令列表命令实例扩展-应用场景类型介绍Redis中的List和Java中的List类似,可以存放很多东西,注意:Redis中的List底层实现是链表(类似于Java中的LinkedList)补充一下:Java中的ArrayList和LinkedListArrayList:底层是动态数组(可以扩容的数组), 根据索引查询数据很快, 随机插入/删除很慢(因为要进行元素移动)LinkedList:底层是双向链表 ,插入/删除很快, 挨个遍历(根据索引遍历)很慢原创 2021-03-09 20:56:13 · 156 阅读 · 0 评论 -
redis--v类型String
StringString类型介绍命令列表命令实例扩展-应用场景String类型介绍Key一直是String, Value也可以是StringString字符串,是Redis中最为常用/基本的数据类型,注意:String类型的Value最大为512MB那就意味着:Redis中的String可以存储很多内容,如 value可以存:key对应的基本信息, 甚至图片的二进制字符串编码,甚至文本小说注意:如果Value中存储的String为数字格式, 如 ''123", 还可以对它进行加减, 那么就意味原创 2021-03-09 20:56:01 · 315 阅读 · 0 评论 -
Redis--命令花式操作
命令分类https://redis.io/commandshttp://www.redis.cn/https://www.runoob.com/redis/redis-commands.html数据类型分类Redis中的数据为Key-Value结构Key都是StringValue可以是如下几种类型:String, Hash,List,Set,SortedSet(ZSet)...原创 2021-03-09 20:55:48 · 80 阅读 · 0 评论 -
Redis--安装
安装准备工作下载解压编译并安装准备配置文件配置文件中文注释详解启动redis服务使用客户端连接redis使用命令进行测试停止Redis服务准备工作1.准备目录安装目录: /export/servers软件存放的目录: /export/software日志文件的目录: /export/logs数据存放的目录: /export/data三台服务器创建创建以上目录:mkdir -p /export/serversmkdir -p /export/softwaremkdir -p /e原创 2021-03-09 20:55:38 · 118 阅读 · 0 评论 -
Redis--初识
Redis初识互联网发展史与架构演变NoSQL的引入互联网三高带来的挑战传统数据库的其他问题NoSQL应运而生NoSQL技术列举Redis脱颖而出互联网发展史与架构演变优化阶段一:小型网站LAMP架构,一台server平天下优化阶段二:各个角色独立部署,提高并发优化阶段三:添加缓存进一步提高性能总结上面的互联网发展与架构演变中引入了一个分布式缓存的角色即使在现如今,分布式缓存也是非常重要的!互联网开发两个重要定律: —李智慧,《大型网站技术架构-核心原理与案例分析》网站性能优化原创 2021-03-09 20:55:25 · 159 阅读 · 2 评论