《Redis入门》系列文章的第四篇,这一节看一下如何用Java版本的redis客户端工具--Jedis来操作redis。

Jedis封装了丰富的api来对redis的五种数据类型 string 、hash 、list 、set 、zset进行操作,可以说命令行界面的命令它都有。

开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务,且你的机器上能正常使用 Java。

导入Java操作Redis的客户端工具--Jedis

1<dependency>
2     <groupId>redis.clients</groupId>
3     <artifactId>jedis</artifactId>
4     <version>3.1.0</version>
5</dependency>

Jedis操作Redis

操作string

 1//string
2//连接本地Redis服务
3Jedis jedis = new Jedis("127.0.0.1",6379);
4
5jedis.set("name","walking");
6jedis.set("weixin","编程大道");
7
8System.out.println(jedis.get("name"));//walking
9System.out.println(jedis.get("weixin"));//编程大道
10jedis.close();

操作list

 1//list
2Jedis jedis = new Jedis("127.0.0.1",6379);
3
4jedis.del("cityList");
5jedis.lpush("cityList","北京","上海","重庆","深圳");
6
7List<String> cityList1 = jedis.lrange("cityList", 0, -1);
8System.out.println(cityList1);//[深圳, 重庆, 上海, 北京]
9System.out.println(jedis.llen("cityList"));//4
10System.out.println(jedis.lpop("cityList"));//深圳
11System.out.println(jedis.rpop("cityList"));//北京
12System.out.println(jedis.llen("cityList"));//2
13
14jedis.close();

操作hash

 1//hash
2Jedis jedis = new Jedis("127.0.0.1",6379);
3
4jedis.hset("user_0001","name","walking");
5jedis.hset("user_0001","sex","1");
6jedis.hset("user_0001","age","24");
7
8System.out.println(jedis.hget("user_0001", "name"));
9System.out.println(jedis.hget("user_0001", "sex"));
10System.out.println(jedis.hget("user_0001", "age"));
11Map<String, String> user_0001 = jedis.hgetAll("user_0001");
12System.out.println(user_0001);//{name=walking, age=24, sex=1}
13jedis.hdel("user_0001","age");
14user_0001 = jedis.hgetAll("user_0001");
15System.out.println(user_0001);//{name=walking, sex=1}
16
17jedis.close();

操作set

 1//set
2Jedis jedis = new Jedis("127.0.0.1",6379);
3
4jedis.sadd("articleSet","0001","0002","0003","0004");
5//返回key集合所有的元素 
6System.out.println(jedis.smembers("articleSet"));// [0004, 0001, 0002, 0003]
7//移除并返回一个随机元素
8System.out.println(jedis.spop("articleSet"));//0001
9System.out.println(jedis.smembers("articleSet"));//[0004, 0002, 0003]
10System.out.println(jedis.srandmember("articleSet"));//随机返回 0003
11jedis.sadd("articleSet2","0022", "0004", "0021");
12System.out.println(jedis.sinter("articleSet","articleSet2"));//交集 [0004]
13
14jedis.close();

操作zset

 1//zset
2Jedis jedis = new Jedis("127.0.0.1",6379);
3
4jedis.zadd("zset",3D,"0003");
5jedis.zadd("zset",1D,"0001");
6jedis.zadd("zset",4D,"0004");
7jedis.zadd("zset",2.5D,"00025");
8jedis.zadd("zset",2D,"0002");
9
10System.out.println(jedis.zcard("zset"));//5
11System.out.println(jedis.zcount("zset",2,3));//3
12//通过分值区间查找成员
13Set<String> zset = jedis.zrangeByScore("zset", 2D, 3D);
14System.out.println(zset);////[0002, 00025, 0003]
15//通过下标查找成员
16System.out.println(jedis.zrange("zset", 0, -1));//[0001, 0002, 00025, 0003, 0004]
17ScanResult<Tuple> zset1 = jedis.zscan("zset", ScanParams.SCAN_POINTER_START);
18System.out.println(zset1.getCursor());//0
19System.out.println(zset1.getResult());//[[0001,1.0], [0002,2.0], [00025,2.5], [0003,3.0], [0004,4.0]]
20jedis.close();

系统命令

1//server
2System.out.println("=========== server =============");
3System.out.println(jedis.dbSize());//key的数量
4System.out.println(jedis.time());//系统时间
5System.out.println(jedis.clientList());//客户端连接列表
6System.out.println(jedis.info());//redis信息

output

  1=========== server =============
2//key的数量
37
4//系统时间
5[1575610535, 74018]
6//客户端连接列表
7id=42 addr=127.0.0.1:63466 fd=7 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
8//redis信息
9# Server
10redis_version:3.2.100
11redis_git_sha1:00000000
12redis_git_dirty:0
13redis_build_id:dd26f1f93c5130ee
14redis_mode:standalone
15os:Windows  
16arch_bits:64
17multiplexing_api:WinSock_IOCP
18process_id:10960
19run_id:1acb04abaca68c04e9e027017c301c04f9a402d2
20tcp_port:6379
21uptime_in_seconds:15572
22uptime_in_days:0
23hz:10
24lru_clock:15329446
25executable:D:\mysoft\redis-3.2.100\redis-server.exe
26config_file:D:\mysoft\redis-3.2.100\redis.windows.conf
27
28# Clients
29connected_clients:1
30client_longest_output_list:0
31client_biggest_input_buf:0
32blocked_clients:0
33
34# Memory
35used_memory:690720
36used_memory_human:674.53K
37used_memory_rss:689688
38used_memory_rss_human:673.52K
39used_memory_peak:690720
40used_memory_peak_human:674.53K
41total_system_memory:0
42total_system_memory_human:0B
43used_memory_lua:37888
44used_memory_lua_human:37.00K
45maxmemory:0
46maxmemory_human:0B
47maxmemory_policy:noeviction
48mem_fragmentation_ratio:1.00
49mem_allocator:jemalloc-3.6.0
50
51# Persistence
52loading:0
53rdb_changes_since_last_save:15
54rdb_bgsave_in_progress:1
55rdb_last_save_time:1575603910
56rdb_last_bgsave_status:ok
57rdb_last_bgsave_time_sec:0
58rdb_current_bgsave_time_sec:0
59aof_enabled:0
60aof_rewrite_in_progress:0
61aof_rewrite_scheduled:0
62aof_last_rewrite_time_sec:-1
63aof_current_rewrite_time_sec:-1
64aof_last_bgrewrite_status:ok
65aof_last_write_status:ok
66
67# Stats
68total_connections_received:41
69total_commands_processed:894
70instantaneous_ops_per_sec:19
71total_net_input_bytes:34647
72total_net_output_bytes:18067
73instantaneous_input_kbps:0.76
74instantaneous_output_kbps:0.25
75rejected_connections:0
76sync_full:0
77sync_partial_ok:0
78sync_partial_err:0
79expired_keys:0
80evicted_keys:0
81keyspace_hits:453
82keyspace_misses:7
83pubsub_channels:0
84pubsub_patterns:0
85latest_fork_usec:55286
86migrate_cached_sockets:0
87
88# Replication
89role:master
90connected_slaves:0
91master_repl_offset:0
92repl_backlog_active:0
93repl_backlog_size:1048576
94repl_backlog_first_byte_offset:0
95repl_backlog_histlen:0
96
97# CPU
98used_cpu_sys:0.53
99used_cpu_user:0.27
100used_cpu_sys_children:0.00
101used_cpu_user_children:0.00
102
103# Cluster
104cluster_enabled:0
105
106# Keyspace
107db0:keys=7,expires=0,avg_ttl=0

池化技术

和关系型数据库一样,Jedis也封装了池化技术来管理redis连接。

 1//连接池配置
2JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
3
4//连接耗尽时是否阻塞, false报异常,true阻塞直到超时, 默认true
5jedisPoolConfig.setBlockWhenExhausted(true);
6jedisPoolConfig.setMaxTotal(200);//最大连接数, 默认8个
7jedisPoolConfig.setMaxIdle(20);//最大空闲连接数, 默认8个
8jedisPoolConfig.setMinIdle(20);//最小空闲连接数, 默认0
9//连接耗尽时是否阻塞, false报异常,true阻塞直到超时, 默认true
10jedisPoolConfig.setBlockWhenExhausted(true);
11//获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间,  默认-1
12jedisPoolConfig.setMaxWaitMillis(5000);
13//在获取连接的时候检查有效性, 默认false
14jedisPoolConfig.setTestOnBorrow(true);
15//在空闲时检查有效性, 默认false
16jedisPoolConfig.setTestWhileIdle(false);
17//逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
18jedisPoolConfig.setTimeBetweenEvictionRunsMillis(300000);
19//逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
20jedisPoolConfig.setMinEvictableIdleTimeMillis(300000);
21//每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
22jedisPoolConfig.setNumTestsPerEvictionRun(50);
23
24String ip = "127.0.0.1";
25int port = 6379;
26//实例化连接池
27JedisPool jedisPool = new JedisPool(jedisPoolConfig,ip,port);
28
29//获得连接
30Jedis client = jedisPool.getResource();
31client.set("name","walking");
32System.out.println(client.get("name"));
33
34//释放连接
35client.close();

更多命令请参考:
Redis命令中心
Redis API

系列教程
Redis入门(一)-Redis简介
Redis入门(二)-Redis能够做什么
Redis入门(三)-Redis的安装及操作key的命令介绍

Redis入门(四)-Java操作Redis的更多相关文章

  1. <Redis> 入门四 Jedis操作Redis

    pom依赖 <dependencies> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> < ...

  2. Windows Redis安装,Java操作Redis

    一.Redis 的安装 1.Redis 下载 Windows 版本下载:https://github.com/dmajkic/redis/downloads 2.解压到 C:\redis-2.4.5- ...

  3. Redis-基本概念、java操作redis、springboot整合redis,分布式缓存,分布式session管理等

    NoSQL的引言 Redis数据库相关指令 Redis持久化相关机制 SpringBoot操作Redis Redis分布式缓存实现 Resis中主从复制架构和哨兵机制 Redis集群搭建 Redis实 ...

  4. redis入门到精通系列(四):Jedis--使用java操作redis详解

    (一)前言 如果不把数据库和后端语言联系起来,就起不到数据库应该要起到的作用.Java语言通过JDBC操作mysql,用Jedis操作redis.当然了,java操作redis的方式不止jedis一种 ...

  5. Redis入门和Java利用jedis操作redis

    Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...

  6. Redis基础知识、命令以及java操作Redis

    1 nosql的概念 sql:操作(关系型)数据库的标准查询语言 关系型数据库(rdbms):以关系(由行和列组成的二维表)模型为核心数据库,有表的储存系统.(mysql.oracle.sqlserv ...

  7. java操作redis之jedis篇

    首先来简单介绍一下jedis,其实一句话就可以概括的,就是java操作redis的一种api.我们知道redis提供了基本上所有常用编程语言的clients,大家可以到http://redis.io/ ...

  8. java 操作redis

    使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar package com.test; import ja ...

  9. windows下Redis安装及利用java操作Redis

    一.windows下Redis安装 1.Redis下载 下载地址:https://github.com/MicrosoftArchive/redis 打开下载地址后,选择版本 然后选择压缩包 下载 R ...

随机推荐

  1. 是时候考虑让你的Spark跑在K8S上了

    [摘要] Spark社区在2.3版本开始,已经可以很好的支持跑着Kubernetes上了.这样对于统一资源池,提高整体资源利用率,降低运维成本(特别是技术栈归一)有着非常大的帮助.这些趋势是一个大数据 ...

  2. 华为eNSP路由交换-静态路由

    静态路由 一. 静态路由及默认路由基本配置 1.1实验内容 在由三台路由器所组成的简单网络中,R1和R3各连着一台PC,现在要求能够实现PC-1和PC-2之间的通信.本实验将通过配置基本的静态路由和默 ...

  3. OC 与js 互相调用

    参考文章 iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码) 参考文章 http://www.jianshu.com/p/fd378c6d70c0 利用苹果原生的JavaScriptC ...

  4. 2019CCPC秦皇岛 E题 Escape(网络流)

    Escape Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Su ...

  5. webpack 环境搭建

    Webpack环境搭建 一.安装node 1.node官网下载node并安装----node里面内置了npm所以用在安装npm了 2.命令行输入node -v查看node是否安装成功 二.全局安装we ...

  6. 3个Spring Boot核心注解,你知道几个?

    Spring Boot 核心注解讲解 Spring Boot 最大的特点是无需 XML 配置文件,能自动扫描包路径装载并注入对象,并能做到根据 classpath 下的 jar 包自动配置. 所以 S ...

  7. eclipse设置护眼模式,就是设置为黑色背景,

    效果如上图 首先下载jar包,然后放到下面的目录,然后打开eclipse然后选择哪个dark的那个主题就可以了 然而这里只是设置软件部分的, 代码的背景和高亮显示,是在另外一个地方设置, 一般是下载e ...

  8. poj 2631 Roads in the North (自由树的直径)

    Roads in the North Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4513   Accepted: 215 ...

  9. Django模型层—ORM

    目录 一.模型层(models) 1-1. 常用的字段类型 1-2. 字段参数 1-3. 自定义char字段 1-4. 外键关系 二.Django中测试脚本的使用 三.单表操作 3-1. 添加记录 3 ...

  10. 聊一聊JS输出为[object,object]是怎么回事

    JS输出为[object object] 今天在学习ES6中的 Symbol 数据类型时,在写demo时控制台输出为 Symbol[object object] ,当时有点疑惑,查阅了相关资料后搞清楚 ...