jedis

JAVA面试——Redis

…衆ロ難τιáo~ 提交于 2019-12-01 02:25:07
1、Redis是什么?都有哪些使用场景? Redis是一个使用C语言开发的高速缓存数据库。 Redis使用场景: 1)记录帖子点赞数、点击数、评论数; 2)缓存近期热帖; 3)缓存文章详情信息; 4)记录用户会话信息。 2、Redis有哪些功能? 1)数据缓存功能; 2)分布式锁的功能; 3)支持数据持久化; 4)支持事务; 5)支持消息队列。 3、Redis和memcache有什么区别? 1)存储方式不同:memcache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小;Redis有部分存在硬盘上,这样能保证数据的持久性。 2)数据支持类型:memcache对数据类型支持相对简单;Redis有复杂的数据类型。 3)使用底层模式不同:它们之间底层实现方式,以及与客户端之间通信的应用协议不一样,Redis自己构建了vm机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。 4)value值大小不同:Redis最大可以达到1GB;memcache只要1MB。 4、Redis为什么是单线程的? 因为cpu不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存或者网络宽带。既然单线程容易实现,而且cpu又不会成为瓶颈,那就顺理成章地采用单线程的方案了。 关于Redis的性能,官方网站也有,普通笔记本轻松处理每秒几十万的请求。

Java 之 Jedis

守給你的承諾、 提交于 2019-12-01 02:21:15
一、客户端 Jedis   1、Jedis     Jedis 是一款java操作 redis 数据库的工具。   2、使用步骤     (1)下载 Jedis 的 jar 包     (2)使用: 1 //1. 获取连接 2 Jedis jedis = new Jedis("localhost",6379); // 可以使用空参构造,默认值"localhost",6379端口 3 4 //2. 操作 5 jedis.set("username","zhangsan"); 6 7 //3. 关闭连接 8 jedis.close(); 二、Jedis 操作各种 redis 中的数据结构   1、操作字符串类型 String     使用的方法同 redis 里面的方法。     Demo: 1 //1. 获取连接 2 Jedis jedis = new Jedis(); 3 //2. 操作 4 //存储 5 jedis.set("username","zhangsan"); 6 //获取 7 String username = jedis.get("username"); 8 System.out.println(username); 9 10 //可以使用setex()方法存储可以指定过期时间的 key value 11 jedis.setex("activecode",20,

从零开始搭建自己的网站十七:Springboot配置redis

☆樱花仙子☆ 提交于 2019-12-01 01:34:31
在前面那篇介绍点击量的文章中提到过,我们需要用redis来记录点击量,这样就不需要每次在点击文章之后,对数据库进行一次修改,修改redis中的缓存数据就可以,然后定时把redis中的数据写入数据库。 下面就让我们来配置添加redis配置及redis工具类。 1、添加Gradle依赖 compile('org.springframework.boot:spring-boot-starter-redis') 2、添加yaml配置文件 jedis : host : 127.0.0.1 port : 6379 maxTotal: 100 maxIdle: 10 maxWaitMillis : 100000 3、配置和工具类代码部分 1)properties配置成bean @ConfigurationProperties(prefix = JedisProperties.JEDIS_PREFIX) public class JedisProperties { static final String JEDIS_PREFIX = "jedis"; private String host; private int port; private int maxTotal; private int maxIdle; private int maxWaitMillis; public String

redis笔记

时光毁灭记忆、已成空白 提交于 2019-11-30 23:01:22
## 今日内容 1. redis 1. 概念 2. 下载安装 3. 命令操作 1. 数据结构 4. 持久化操作 5. 使用Java客户端操作redis # Redis 1. 概念: redis是一款高性能的NOSQL系列的非关系型数据库 1.1.什么是NOSQL NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。 1.1.1. NOSQL和关系型数据库比较 优点: 1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。 2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。 3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。 4

jedis操作-hash集合

China☆狼群 提交于 2019-11-30 21:52:26
import redis.clients.jedis.Jedis; import java.util.List; import java.util.Map; import java.util.Set; /** * Created by user on 2015/12/8. */ public class RedisTestForHash { private Jedis jedis = new Jedis("10.19.16.31",6379); public void test(){ jedis.hset("redis","zj","a"); //hash集合设置 key sub-key value jedis.hset("redis","zj","b"); jedis.hset("redis","zj","c"); jedis.hset("redis","ww","c"); jedis.hset("redis","ww","b"); jedis.hset("redis", "ww", "a"); //不存在的时候设置值 jedis.hsetnx("redis", "ls", "a"); jedis.hsetnx("redis", "ls", "b"); String a = jedis.hget("redis","ls"); System.out.println(a); /

征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DE

旧巷老猫 提交于 2019-11-30 21:51:45
我想大部分人对 spring-data-hadoop 、 spring-data-mongodb 、 spring-data-redis 以及 spring-data-jpa 表示关注。 一、简述 spring 把专门的数据操作独立封装在 spring-data 系列中, spring-data-redis 自然是针对 Redis 的独立封装了。 当前版本 1.0.1 ,主要是将 jedis 、 jredis 、 rjc 以及 srp 等 Redis Client 进行了封装,同时支持事务。已经让我垂涎欲滴了。当然,当前版本不支持 Sharding 。例如,前文曾经通过 Jedis 通过Client配置,实现一致性哈希,达到Sharding的目的。再一点,如果你早在spring1.x写过SpringJdbc的话,现在会觉得似曾相识。 在经过一番思想斗争后,我最终放弃了 Jedis 原生实现,拥抱 spring-data-redis 了。为什么?因为,我需要一个有事务机制的框架,一个不需要显式调用对象池操作的框架。这些 spring-data-redis 都解决了。至于Sharding,当前数据量要求还不大,期待 Redis 3.0 吧。 二、配置 对象池配置: Xml代码 < bean id = "jedisPoolConfig" class = "redis.clients

SpringDataRedis使用教程

邮差的信 提交于 2019-11-30 21:21:03
项目常见问题思考 们目前的系统已经实现了广告后台管理和广告前台展示,但是对于首页每天有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪。那如何解决呢?我们通常的做法有两种:一种是数据缓存、一种是网页静态化。我们今天讨论第一种解决方案。 Redis redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写。企业开发通常采用Redis来实现缓存。同类的产品还有memcache 、memcached 、MongoDB等。 jedis Jedis是Redis官方推出的一款面向Java的客户端,提供了很多接口供Java语言调用。可以在Redis官网下载,当然还有一些开源爱好者提供的客户端,如Jredis、SRP等等,推荐使用Jedis。 Spring Data Redis pring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现。 spring-data-redis针对jedis提供了如下功能: (1)连接池自动管理,提供了一个高度封装的“RedisTemplate”类 (2)

Redis从认识安装到实现增删改查

主宰稳场 提交于 2019-11-30 18:01:59
Redis从一无所知,到知道一点点 Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库 ——维基百科 可以简单的说, Redis就是一款高性能的NoSQL数据库 什么是NoSQL? 我们前面所学习的 MySQL数据库 是典型的的 SQL数据库 也就是传统的关系型数据库,而我们今天学习的 Redis数据库 则是一款NoSQL数据库,也叫作非关系型数据库,它与我们熟悉的MySQL等的概念完全是不一样的,它是一项全新的数据库理念,我们帖一组百度百科的解释 NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题 ——百度百科 说明:我们现在所看到的的博客,RSS,P2P,微博,抖音等均属于 Web2.0的产物,Web2.0相比较过去的Web1.0更加注重于用户的交互,用户不仅可以浏览,还可以上传一些资源到网站上,例如图片文字或者说短视频等,使得用户也参与到了网站内容的制造中去了 为什么使用NoSQL? 部署成本低:部署操作简单,以开源软件为主

SpringBoot系列教程之Redis集群环境配置

跟風遠走 提交于 2019-11-30 16:38:10
之前介绍的几篇redis的博文都是基于单机的redis基础上进行演示说明的,然而在实际的生产环境中,使用redis集群的可能性应该是大于单机版的redis的,那么集群的redis如何操作呢?它的配置和单机的有什么区别,又有什么需要注意的呢? 本篇将主要介绍SpringBoot项目整合redis集群,并针对这个过程中出现的问题进行说明,并给出相应的解决方案 I. 环境相关 首先需要安装redis集群环境,可以参考博文: redis-集群搭建手册 然后初始化springboot项目,对应的pom结构如下 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.7</version> <relativePath/> <!-- lookup parent from update --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

Jedis(三)——Hash/List/Set

我的梦境 提交于 2019-11-30 16:35:40
照着文档,找对应的函数就好了,封装得很完整,使用真不是什么难事。 至于二次封装的话,去实现Spring的Cache接口是一种方式,但是,不能把注解设计得太复杂,不爱用的话设计就失败了,需要牺牲一部分Jedis的特性, 个人推荐使用静态类,方便后期函数扩展,最大程度保证原有的功能。 Hash package cn.swsk.xbry.api.v1.md1001; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.util.HashMap; import java.util.Map; /** * @author css * @date 2019/9/24 22:20 */ public class Test { public static void main(String[] args) throws InterruptedException { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(25); config.setMaxIdle(20); config.setMinIdle(5); try