首页
学习
活动
专区
工具
TVP
发布

吉林乌拉

专栏成员
113
文章
108822
阅读量
23
订阅数
Redis Cluster
Redis Cluster是Redis的分布式解决方案。当遇到内存、并发、流量等瓶颈时,就可以采用Cluster架构达到负载均衡目的。因为Redis Cluster是Redis3.0版本之后才有的,所以在Redis3.0版本之前,Redis分布式的解决方案一般有两种:
吉林乌拉
2019-11-06
8570
Redis地理信息定位GEO
Redis提供了GEO功能,也就是地理信息定位功能。通过Redis中的GEO功能,我们可以很方便的通过经纬度来计算两个地理位置之间的距离。所以我们在实际的开发中,可以使用Redis中的GEO功能,来实现和附近位置有关的功能。下面我们详细介绍Redis中的GEO功能的相关命令。
吉林乌拉
2019-10-24
1.2K0
获取Redis中所有的键
在日常的开发中我们有时会要遍历Redis中的所有的键,我们在之前的文章中已经介绍过了,我们可以用keys命令来获取所有的键,那么在Redis中除了keys命令之外,我们还可以使用scan命令获取。下面我们将详细了解一下这两种命令的相关内容。
吉林乌拉
2019-10-15
8K0
Redis哈希类型的使用场景
在上一篇我们详细介绍了Redis哈希类型的使用命令及内部编码,那么在这一篇中,我们将了解了解Redis哈希类型的实际使用场景。大家都知道Redis最核心功能就是性能比较高,因为是它是将数据存储到内存中的,而这是传统的关系型数据库所不具备的。用一句通俗的话来形容关系型数据库和Redis哈希类型的关系就是关系型数据库中一条记录相当于Redis哈希类型一个key。
吉林乌拉
2019-09-30
9720
Redis哈希类型详解
我们知道在Redis中有5种数据类型,之前的文章中我们已经介绍过了String类型,也就是字符串类型,今天我们学习第二种数据类型,哈希类型。大部分语言基本都提供了哈希类型,如Java语言中的Map类型及Python语言中的字典类型等等。虽然语言不同,但它们基本使用都是一样的。也就是都是键值对结构的。例如:
吉林乌拉
2019-09-27
4260
Redis底层数据结构
在上一篇中我们已经介绍过了Redis有5种数据类型,但每一种数据类型底层的实现都是不同的,在学习Redis时,我们除了要掌握这5种数据类型外,还要了解它们具体的底层实现,这有助于我们更好的掌握Redis的,在遇到问题时,可以方便快速的解决问题,在这篇,我们主要了解全局命令、数据结构及内部编码等方面的知识。
吉林乌拉
2019-09-26
4480
Redis字符串类型
从今天开始我将重点分享一下Redis中的5种数据结构,今天我们学习一下第一种数据结构字符串。字符串是Redis中的最基础的数据结构。我们保存到Redis中的key,也就是键,就是字符串结构的,除此之外,我们以后学习的其它数据结构,也是在字符串的基础上设计的,可见字符串结构对于Redis是多么的重要。字符串中的值虽然是字符串但是可以保存很多种类型的如:简单的字符串、JSON、XML、二进制等等。但有一点要特别注意,就是在Redis中字符串类型的值最大只能保存512MB。
吉林乌拉
2019-09-26
6120
自动创建代理-BeanNameAutoProxyCreator
在其它的文章中我们基本都是采用ProxyFactoryBean类来创建代理类的,但在使用此类时,我们通常要设置很多属性不方便我们使用。在spring中我们还可以使用BeanNameAutoProxyCreator类以更加优雅的方式为我们创建代理类。下面我们看一下该类的使用:
吉林乌拉
2019-09-02
1.2K0
多线程中的死锁是啥意思?
死锁是在开发多线程时才会遇到的。原因就是不同的线程都在等待其它线程释放锁,而其它线程由于一些原因迟迟没有释放,这就造成了所有的线程都开始等待程序出现了假死的现象。说白了这就是一个BUG。我们用下面简单的程序来模拟一下死锁发生的现象。
吉林乌拉
2019-08-14
1.1K0
Java中volatile关键字的使用
volatile关键字的作用就是使变量在多个线程间可见。这到底是什么意思呢?我们先看下面的事例然后在详细说明。
吉林乌拉
2019-08-14
8280
ReentrantReadWriteLock类的使用
ReentrantLock:同一时间只能有一个线程执行ReentrantLock.lock()后面的代码,这样虽然可以保证线程安全,但程序的运行效率却比较低。
吉林乌拉
2019-08-14
4590
synchronized关键字和volatile关键字的区别
线程原子性是指不能在被拆分的操作。在说的直白点就是我们知道线程在执行时是需要一个前提条件的那就是需要获取到系统CPU的执行资格,虽然线程获取到了执行资格但CPU也可以随时切换,不管线程是否执行完毕。线程原子性就是说如果线程已经获取到了CPU的执行资格,如果线程在没有执行完时,任何线程是不能够中断的。
吉林乌拉
2019-08-14
7460
ThreadLocal详细的使用
我们知道在Java中用static关键字可以实现变量的共享,那么在多线程环境中可以用ThreadLocal让每一个线程都有自己的私用数据。首先我们先看一下共享变量的实例。
吉林乌拉
2019-08-14
7010
AtomicInteger、AtomicBoolean、AtomicLong等原子类的使用
我们看两个线程输出的count值都是0这显然是不正确的,原因就是因为++这个操作符不是一个原子操作。我们可以把这个操作符拆分开来看一下它的实现逻辑。
吉林乌拉
2019-08-14
8710
AtomicIntegerArray、AtomicLongArray等类的使用
和上一篇一样这几个类的使用方法几乎是一样的,所以我们以AtomicIntegerArray类来演示该原子类的使用,因为在上一篇中我们已经实验过了,这个包下的类确实是原子操作的,也就是说是线程安全的,所以下面的事例的重点在于演示方法的使用,而不是在编写多线程程序了。
吉林乌拉
2019-08-14
7610
AtomicReference、AtomicIntegerFieldUpdater、等类的使用
AtomicReference类的作用是以原子的方式更新引用类型。下面我们看一下具体的例子。
吉林乌拉
2019-08-14
1K0
CountDownLatch的使用
在开发多线程程序时,常常有这样的需求就是希望主线程可以等待子线程执行完后在执行主线程的逻辑,按照我们之学过的知识,我们可以用join()方法来实现此需求。
吉林乌拉
2019-08-14
3350
Future的使用
在开发多线程时,我们有时会需要返回子线程的处理结果,但不幸的是Runable接口是void类型没有返回值的。有人可能会想到用实例变量的方法实现此需求。实例变量的方式当然也是可以的,在其它文章中已经介绍过了,在使用实例变量时要特别注意,因为实例变量有可能会出现线程安全问题。其实在Java中已经为我们提供了这样的接口Callable接口。我们看一下Callable接口的定义。
吉林乌拉
2019-08-14
4820
垃圾收集算法
垃圾收集器是Java虚拟机中自带的功能,它的目的是帮助我们管理内存,正是因为有它的存在所以,我们在开发时,基本不用考虑内存溢出等问题。基本不用考虑不代表,一定不会遇到内存溢出等问题,在上一篇中我们用简单的方法模拟了一些内存溢出的问题,在这一篇我们将重点分享一下,Java中垃圾收集器的一些实现算法知识,了解这方面的知识有助于,在内存溢出时,快速的解决问题。垃圾收集器的主要功能有3个。
吉林乌拉
2019-08-14
4190
类加载
我们知道在运行Java程序时,首先需要把源代码编译成二进制文件也就是class文件,然后虚拟机才能执行。那虚拟机在执行class文件时,都进行了哪些步骤呢。下面我们将详细分享一下。当类也就是class文件被加载到虚拟机内存开始,到卸载出内存为止。它将要执行以下7个步骤:
吉林乌拉
2019-08-14
4870
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档