Redis入门(四)-Java操作Redis
《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简介
Redis入门(二)-Redis能够做什么
Redis入门(三)-Redis的安装及操作key的命令介绍
Redis入门(四)-Java操作Redis的更多相关文章
- <Redis> 入门四 Jedis操作Redis
pom依赖 <dependencies> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> < ...
- Windows Redis安装,Java操作Redis
一.Redis 的安装 1.Redis 下载 Windows 版本下载:https://github.com/dmajkic/redis/downloads 2.解压到 C:\redis-2.4.5- ...
- Redis-基本概念、java操作redis、springboot整合redis,分布式缓存,分布式session管理等
NoSQL的引言 Redis数据库相关指令 Redis持久化相关机制 SpringBoot操作Redis Redis分布式缓存实现 Resis中主从复制架构和哨兵机制 Redis集群搭建 Redis实 ...
- redis入门到精通系列(四):Jedis--使用java操作redis详解
(一)前言 如果不把数据库和后端语言联系起来,就起不到数据库应该要起到的作用.Java语言通过JDBC操作mysql,用Jedis操作redis.当然了,java操作redis的方式不止jedis一种 ...
- Redis入门和Java利用jedis操作redis
Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...
- Redis基础知识、命令以及java操作Redis
1 nosql的概念 sql:操作(关系型)数据库的标准查询语言 关系型数据库(rdbms):以关系(由行和列组成的二维表)模型为核心数据库,有表的储存系统.(mysql.oracle.sqlserv ...
- java操作redis之jedis篇
首先来简单介绍一下jedis,其实一句话就可以概括的,就是java操作redis的一种api.我们知道redis提供了基本上所有常用编程语言的clients,大家可以到http://redis.io/ ...
- java 操作redis
使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar package com.test; import ja ...
- windows下Redis安装及利用java操作Redis
一.windows下Redis安装 1.Redis下载 下载地址:https://github.com/MicrosoftArchive/redis 打开下载地址后,选择版本 然后选择压缩包 下载 R ...
随机推荐
- 【跟唐老师学习云网络】-第8篇 iptables - filter过滤功能
[摘要] 前面的各种协议已经可以把基本可用的物理网络世界给形成了,在正常情况下,它可以玩的很溜.比如组个局域网办公,或者打个联机魔兽争霸,都没有什么问题. 一.背景介绍 前面的各种协议已经可以把基本可 ...
- [AHOI2017初中组]guide
题目描述 农场主John最近在网上买了一辆新车,在购买汽车配件时,John不小心点了两次"提交"按钮.导致汽车上安装了两套GPS系统,更糟糕的是John在使用GPS导航时,两套系统 ...
- MVC 入门 自动生成 增删改查所有功能
MVC现在版本已经是5了 EF现在最新的应该是6.0.2了 开发工具是 Visual Studio2013 数据库是 SQL Server 2012 这些需要.NET Framework4.5 的 ...
- 小程序 - 简单实现mixin功能
前言 在业务中有没有一个场景:多个页面需要用到一样的 data 和 method,或者生命周期都需要执行同样的操作.我们在每个页面都写上重复的代码,一但功能修改就要更新多个页面,在后期维护起来会很麻烦 ...
- 超酷3D照片展示效果
@{ Layout = null; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www. ...
- 小白进阶—python中os模块用法
一.os模块概述 python中的os 模块包含普遍的操作系统功能,这个模块不受平台限制,即windows和linux上都适用. 二.常用方法 1.os.name 返回正在使用的平台.如果是windo ...
- Python3 并发编程2
目录 进程互斥锁 基本概念 互斥锁的使用 IPC 基本概念 队列 生产者消费者模型 基本概念 代码实现 线程 基本概念 创建线程 线程互斥锁 进程互斥锁 基本概念 临界资源: 一次仅允许一个进程使用的 ...
- 插入排序 C&&C++
(blog主要用于展示算法流程) 插入排序算法:通过对未排序的数据逐个插入合适的位置而完成排序工作 流程: (1)先对数组前两个数据进行从小到大排序 (2)将第三个数据与前两个数据比较,将 ...
- 什么是jsp(java server pages)
JSP是一种运行在服务器端的脚本语言,是用来开发动态网页的技术,它是JAVA Web 程序开发的重要技术.本章介绍JSP技术的相关概念以及如何开发JSP程序,主要内容包括JSP技术简介.JSP的处理过 ...
- 4种MySQL分页查询优化的方法,你知道几个?
前言 当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询.对于数据库分页查询,也有很多种方法和优化的点.下面简单说一下我知道的 ...