Java连接redis及基本操作示例

本文实例讲述了Java连接redis及基本操作。分享给大家供大家参考,具体如下:

点击此处:本站下载安装。

解压安装

启动redis:使用cd命令切换目录到 D:\redis运行redis-server.exe redis.windows.conf

默认端口为6379

访问:切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>testRedis</groupId>
 <artifactId>testRedis</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <build/>
 <dependencies>
  <!-- Redis NoSQL 操作依赖 -->
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>2.1.0</version>
    </dependency>
 </dependencies>
</project>

测试代码:

package com.crisy.redis;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
public class RedisClient {
 /**
 * 一般项目基本都使用非切片池;
 * 切片池主要用于分布式项目,可以设置主从Redis库
 */
 private Jedis jedis;//非切片客户端连接
 private JedisPool jedisPool;//非切片连接池
 private ShardedJedis shardedJedis;//切片客户端连接
 private ShardedJedisPool shardedJedisPool;//切片连接池

 public RedisClient(){
    initialPool(); //初始化非切片连接池
    initialShardedPool(); //初始化切片连接池
    shardedJedis = shardedJedisPool.getResource();
    jedis = jedisPool.getResource();
  }
 private void initialPool() {
 JedisPoolConfig config = new JedisPoolConfig();
 config.setMaxActive(20);
 config.setMaxIdle(5);
 config.setMaxWait(100001);
 config.setTestOnBorrow(false);
 jedisPool = new JedisPool(config,"127.0.0.1",6379);
 } 

 private void initialShardedPool() {
 JedisPoolConfig config = new JedisPoolConfig();
 config.setMaxActive(20);
 config.setMaxIdle(5);
 config.setMaxWait(100001);
 config.setTestOnBorrow(false);
 //slave连接
 List<JedisShardInfo> shardInfos = new ArrayList<JedisShardInfo>();
 shardInfos.add(new JedisShardInfo("127.0.0.1",6379,"master"));
 //构造池
 shardedJedisPool = new ShardedJedisPool(config, shardInfos);
 }

 public void show(){
 System.out.println("----对Value操作的命令----");
 valueOperate();
 System.out.println("----对String操作的命令----");
 stringOperator();
 System.out.println("----对List操作的命令----");
 listOperator();
 System.out.println("----对Set操作的命令----");
 setOperator();
 System.out.println("----对hash操作的命令----");
 hashOperate();
 }

 /**
 * 对Value操作的命令
 * @throws InterruptedException
 */
 private void valueOperate(){
 System.out.println("清空当前选择库中所有key:"+jedis.flushDB());
 System.out.println("清空所有库中所有key:"+jedis.flushAll());
 System.out.println("判断myKey键是否存在:"+shardedJedis.exists("myKey"));
 System.out.println("新增myKey:"+shardedJedis.set("myKey","myValue"));
 System.out.println("判断myKey键是否存在:"+shardedJedis.exists("myKey"));
 System.out.println("查看myKey所储存的值的类型:"+jedis.type("myKey"));
 System.out.println("重命名myKey-myKey_1:"+jedis.rename("myKey", "myKey_1"));
 System.out.println("判断myKey键是否存在:"+shardedJedis.exists("myKey"));
 System.out.println("判断myKey_1键是否存在:"+shardedJedis.exists("myKey_1"));
 System.out.println("新增myKey_2:"+shardedJedis.set("myKey_2","myValue_2"));
 System.out.println("查看索引为0的Key:"+jedis.select(0));
 System.out.println("当前数据库中key的数目:"+jedis.dbSize());
 System.out.println("系统中所有键如下:");
 //返回满足给定pattern的所有key
    Set<String> keys = jedis.keys("*");
    Iterator<String> it=keys.iterator() ;
    while(it.hasNext()){
      String key = it.next();
      System.out.println(key);
    }
    //删除时,如果不存在忽略此命令
    System.out.println("系统中删除myKey_3: "+jedis.del("myKey_3"));
    System.out.println("系统中删除myKey_2: "+jedis.del("myKey_2"));
    System.out.println("判断myKey_2是否存在:"+shardedJedis.exists("myKey_2"));
    System.out.println("设置 myKey_1的过期时间为5秒:"+jedis.expire("myKey_1", 5));
    try {
  Thread.sleep(2000);
 } catch (InterruptedException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
    //没有设置过期时间或者不存在的都返回-1
    System.out.println("获得myKey_1的剩余活动时间:"+jedis.ttl("myKey_1"));
    System.out.println("取消设置myKey_1的活动时间:"+jedis.persist("myKey_1"));
    System.out.println("查看myKey_1的剩余活动时间:"+jedis.ttl("myKey_1"));
 }

 /**
 * 对String操作的命令
 */
 private void stringOperator(){
 System.out.println("清空当前选择库中所有key:"+jedis.flushDB());
 System.out.println("给数据库中名称为key01的string赋予值value:"+jedis.set("key01", "value01"));
 System.out.println("给数据库中名称为key02的string赋予值value:"+jedis.set("key02", "value02"));
 System.out.println("给数据库中名称为key03的string赋予值value:"+jedis.set("key03", "value03"));
 System.out.println("返回数据库中名称为key01的string的value:"+jedis.get("key01"));
 System.out.println("返回库中多个string的value:"+jedis.mget("key01","key02","key03"));
 System.out.println("添加string,名称为key,值为value:"+jedis.setnx("key04","value04"));
 System.out.println("向库中添加string,设定过期时间time:"+jedis.setex("key05",5,"value05"));
 System.out.println("批量设置多个string的值:"+jedis.mset("key06_1","value06_1","key06_2","value06_2"));
 System.out.println("给数据库中名称为key07的string赋予值value:"+jedis.set("key07", "1"));
 System.out.println("名称为key07的string增1操作:"+jedis.incr("key07"));
 //ERR value is not an integer or out of range
 //System.out.println("名称为key01的string增1操作:"+jedis.incr("key01"));
 System.out.println("名称为key07的string增加integer:"+jedis.incrBy("key07", 5));
 System.out.println("名称为key07的string减1操作:"+jedis.decr("key07"));
 System.out.println("名称为key07的string减少integer:"+jedis.decrBy("key07", 3));
 System.out.println("名称为key的string的值附加value:"+jedis.append("key01","Hello World"));
 System.out.println("返回名称为key的string的value的子串:"+jedis.substr("key01",0,5));
 }

 /**
 * 对List操作的命令
 */
 private void listOperator(){
 System.out.println("清空当前选择库中所有key:"+jedis.flushDB());
 //准备两个list
 shardedJedis.lpush("mylist", "Java");
    shardedJedis.lpush("mylist", "C");
    shardedJedis.lpush("mylist", "C++");
    shardedJedis.lpush("mylist", "Java");
 System.out.println("在名称为mylist的list尾添加一个值为value的元素:"+jedis.rpush("mylist","phython"));
 System.out.println("在名称为mylist的list头添加一个值为value的 元素:"+jedis.rpush("mylist","PHP"));
 System.out.println("返回名称为mylist的list的长度:"+jedis.llen("mylist"));
 System.out.println("返回名称为mylist中start至end之间的元素:"+jedis.lrange("mylist",0,3));
 System.out.println("截取名称为mylist的list:"+jedis.ltrim("mylist",0,3));
 System.out.println("返回名称为mylist的list中index位置的元素:"+jedis.lindex("mylist",0));
 System.out.println("给名称为mylist的list中index位置的元素赋值:"+jedis.lset("mylist",0,"hahahahah我改啦"));
 System.out.println("删除count个mylist的key中值为value的元素:"+jedis.lrem("mylist",1,"Java"));
 System.out.println("返回并删除名称为mylist的list中的首元素:"+jedis.lpop("mylist"));
 System.out.println("返回并删除名称为mylist的list中的尾元素:"+jedis.rpop("mylist"));
 }

 /**
 * 对Set操作的命令
 */
 private void setOperator(){
 System.out.println("清空当前选择库中所有key:"+jedis.flushDB());
 //准备两个set
 jedis.sadd("myset","hahaha");
 jedis.sadd("myset","hahaha");
 jedis.sadd("myset","lalala");
 jedis.sadd("myset","kakaka");
 jedis.sadd("myset2","hahaha");
 jedis.sadd("myset2","lalala");
 jedis.sadd("myset2","kakaka");
 System.out.println("向名称为myset的set中添加元素member:"+jedis.sadd("myset","wawawa"));
 System.out.println("返回名称为myset的set的所有元素:"+jedis.smembers("myset"));
 System.out.println("删除名称为myset的set中的元素member:"+jedis.srem("myset","wawawa"));
 System.out.println("返回名称为myset的set的所有元素:"+jedis.smembers("myset"));
 System.out.println("随机返回并删除名称为myset的set中一个元素:"+jedis.spop("myset"));
 System.out.println("移到集合元素:"+jedis.smove("myset","myset2","hahaha"));
 System.out.println("返回名称为myset的set的所有元素:"+jedis.smembers("myset"));
 System.out.println("返回名称为myset2的set的所有元素:"+jedis.smembers("myset2"));
 System.out.println("返回名称为mykey的set的基数:"+jedis.scard("myset"));
 System.out.println("member是否是名称为mykey的set的元素:"+jedis.sismember("myset","hahaha"));
 System.out.println("求交集:"+jedis.sinter("myset","myset2"));
 System.out.println("求交集并将交集保存到dstkey的集合:"+jedis.sinterstore("dstkey","myset2","myset"));
 System.out.println("返回名称为dstkey的set的所有元素:"+jedis.smembers("dstkey"));
 System.out.println("求并集:"+jedis.sunion("myset","myset2"));
 System.out.println("求并集并将并集保存到dstkey的集合:"+jedis.sinterstore("dstkey","myset2","myset"));
 System.out.println("返回名称为dstkey的set的所有元素:"+jedis.smembers("dstkey"));
 System.out.println("求差集:"+jedis.sdiff("myset2","myset"));
 System.out.println("求差集并将差集保存到dstkey的集合:"+jedis.sdiffstore("dstkey","myset2","myset"));
 System.out.println("返回名称为dstkey的set的所有元素:"+jedis.smembers("dstkey"));
 System.out.println("随机返回名称为dstkey的set的一个元素:"+jedis.srandmember("dstkey"));
 }

 /**
 * hash
 */
 private void hashOperate(){
 System.out.println(jedis.flushDB());
 System.out.println("向名称为key的hash中添加元素field1:"+shardedJedis.hset("key", "field1", "value1"));
    System.out.println("向名称为key的hash中添加元素field2:"+shardedJedis.hset("key", "field2", "value2"));
    System.out.println("向名称为key的hash中添加元素field3:"+shardedJedis.hset("key", "field3", "value3"));
    System.out.println("返回名称为key的hash中field1对应的value:"+shardedJedis.hget("key", "field1"));
    System.out.println("返回名称为key的hash中field1对应的value:"+shardedJedis.hmget("key", "field1","field2","field3"));
    System.out.println("删除名称为key的hash中键为field1的域:"+shardedJedis.hdel("key", "field1"));
    System.out.println("返回名称为key的hash中所有键对应的value:"+shardedJedis.hvals("key"));
    System.out.println("返回名称为key的hash中元素个数:"+shardedJedis.hlen("key"));
    System.out.println("返回名称为key的hash中所有键:"+shardedJedis.hkeys("key"));
    System.out.println("返回名称为key的hash中所有的键(field)及其对应的value:"+shardedJedis.hgetAll("key"));
    System.out.println("名称为key的hash中是否存在键为field1的域:"+shardedJedis.hexists("key","field1"));
 }
}

更多关于java相关内容感兴趣的读者可查看本站专题:《Java+MySQL数据库程序设计总结》、《Java操作Excel技巧总结》、《Java数据结构与算法教程》、《Java文件与目录操作技巧汇总》及《Java操作DOM节点技巧总结》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • 详解Java在redis中进行对象的缓存

    Java在redis中进行对象的缓存一般有两种方法,这里介绍序列化的方法,个人感觉比较方便,不需要转来转去. 一.首先,在存储的对象上实现序列化的接口 package com.cy.example.entity.system; import java.util.List; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; im

  • 详解在Java程序中运用Redis缓存对象的方法

    这段时间一直有人问如何在Redis中缓存Java中的List 集合数据,其实很简单,常用的方式有两种: 1. 利用序列化,把对象序列化成二进制格式,Redis 提供了 相关API方法存储二进制,取数据时再反序列化回来,转换成对象. 2. 利用 Json与java对象之间可以相互转换的方式进行存值和取值. 正面针对这两种方法,特意写了一个工具类,来实现数据的存取功能. 1. 首页在Spring框架中配置 JedisPool 连接池对象,此对象可以创建 Redis的连接 Jedis对象.当然,必须导

  • Java使用Redisson分布式锁实现原理

    1. 基本用法 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.8.2</version> </dependency> Config config = new Config(); config.useClusterServers() .setScanInterval(2000) /

  • 如何在 Java 中利用 redis 实现 LBS 服务

    前言 LBS(基于位置的服务) 服务是现在移动互联网中比较常用的功能.例如外卖服务中常用的我附近的店铺的功能,通常是以用户当前的位置坐标为基础,查询一定距离范围类的店铺,按照距离远近进行倒序排序. 自从 redis 4 版本发布后, lbs 相关命令正式内置在 redis 的发行版中.要实现上述的功能,主要用到 redis geo 相关的两个命令 GEOADD 和 GEORADIOUS 命令描述 GEOADD GEOADD key longitude latitude member [longi

  • 在Java中使用redisTemplate操作缓存的方法示例

    背景 在最近的项目中,有一个需求是对一个很大的数据库进行查询,数据量大概在几千万条.但同时对查询速度的要求也比较高. 这个数据库之前在没有使用Presto的情况下,使用的是Hive,使用Hive进行一个简单的查询,速度可能在几分钟.当然几分钟也并不完全是跑SQL的时间,这里面包含发请求,查询数据并且返回数据的时间的总和.但是即使这样,这样的速度明显不能满足交互式的查询需求. 我们的下一个解决方案就是Presto,在使用了Presto之后,查询速度降到了秒级.但是对于一个前端查询界面的交互式查询来

  • Java连接redis及基本操作示例

    本文实例讲述了Java连接redis及基本操作.分享给大家供大家参考,具体如下: 点击此处:本站下载安装. 解压安装 启动redis:使用cd命令切换目录到 D:\redis运行redis-server.exe redis.windows.conf 默认端口为6379 访问:切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379. pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0&

  • Java实现Redis哨兵的示例代码

    前言: 本文将采用文字+代码的方式,讲解redis版哨兵的实现,所有代码都将写在一个类中,每个属性和方法都会结合文字加以说明. 1. 哨兵(Sentinel)主要功能如下: 1.不时的监控redis节点是否良好运行,如果节点不可达就会对节点进行下线标识 2.如果被标识的是主节点,哨兵就会选举一个redis从(slave)节点成为新的主节点继续对外提供读写服务, 进而实现自动故障转移,保证系统的高可用. 3.在redis主节点 和 从节点 进行切换后,主节点配置文件master_redis.con

  • Java连接postgresql数据库的示例代码

    本文介绍了Java连接postgresql数据库的示例代码,分享给大家,具体如下: 1.下载驱动jar 下载地址:https://jdbc.postgresql.org/download.html 2.导入jar包 新建lib文件夹,将下载的jar驱动包拖到文件夹中. 将jar驱动包添加到Libraries 3.程序代码如下:HelloWorld.java package test; import java.sql.Connection; import java.sql.DriverManage

  • 使用java连接Redis,Maven管理操作

    pom配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0

  • Java连接Redis全过程讲解

    目录 Java连接Redis 引入jar包 编写测试类 Jedis常用方法API 一.首先把 jedis-2.1.0.jar(jedis基础包) 二.创建 jedis对象 三.键操作 四.字符串操作 五.整数和浮点数操作 六.列表(List)操作 七.集合(Set)操作 八.哈希(Hash)操作 九.有序集合(Zsort)操作 十.排序操作 Java连接Redis Jedis Client是Redis官网推荐的一个面向java客户端,库文件实现了对redis各类API进行封装调用. 引入jar包

  • java连接mysql数据库学习示例

    复制代码 代码如下: package sns.team6.util; import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException; /** * 链接数据库的工具类 *  * @author 徐锐 *  */public class DBHelper { // mysq

  • java 连接Redis的小例子

    需要相应API (jedis-2.1.0.jar) 复制代码 代码如下: package com.redis; import redis.clients.jedis.Jedis; public class Client {    public void getCache(String key){        Jedis jedis = new Jedis("127.0.0.1",6379); for (int i = 0; i < 100000; i++){          

  • IDEA版使用Java操作Redis数据库的方法

    首先 下载 jedis.jar包 然后再 工程设置里面找到Libraries,点击+.添加下载好的jedis.jar包.点击OK退出即可 创建Java_Control_Redis类 测试链接 package ccit.redis; import redis.clients.jedis.Jedis; public class Java_Control_Redis { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis je

  • golang连接redis库及基本操作示例过程

    目录 Redis介绍 Redis支持的数据结构 Redis应用场景 准备Redis环境 go-redis库 安装 连接 V8新版本相关 连接Redis哨兵模式 连接Redis集群 基本使用 HVals set/get示例 zset示例 根据前缀获取Key 执行自定义命令 按通配符删除key Pipeline 事务 Watch Redis介绍 Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上.除此之外,通过复制.持久化

  • Java利用Redis实现消息队列的示例代码

    本文介绍了Java利用Redis实现消息队列的示例代码,分享给大家,具体如下: 应用场景 为什么要用redis? 二进制存储.java序列化传输.IO连接数高.连接频繁 一.序列化 这里编写了一个java序列化的工具,主要是将对象转化为byte数组,和根据byte数组反序列化成java对象; 主要是用到了ByteArrayOutputStream和ByteArrayInputStream; 注意:每个需要序列化的对象都要实现Serializable接口; 其代码如下: package Utils

随机推荐