《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 |
| 2 |
| 3Jedis jedis = new Jedis("127.0.0.1",6379); |
| 4 |
| 5jedis.set("name","walking"); |
| 6jedis.set("weixin","编程大道"); |
| 7 |
| 8System.out.println(jedis.get("name")); |
| 9System.out.println(jedis.get("weixin")); |
| 10jedis.close(); |
操作 list
| 1 |
| 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")); |
| 10System.out.println(jedis.lpop("cityList")); |
| 11System.out.println(jedis.rpop("cityList")); |
| 12System.out.println(jedis.llen("cityList")); |
| 13 |
| 14jedis.close(); |
操作 hash
| 1 |
| 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); |
| 13jedis.hdel("user_0001","age"); |
| 14user_0001 = jedis.hgetAll("user_0001"); |
| 15System.out.println(user_0001); |
| 16 |
| 17jedis.close(); |
操作 set
| 1 |
| 2Jedis jedis = new Jedis("127.0.0.1",6379); |
| 3 |
| 4jedis.sadd("articleSet","0001","0002","0003","0004"); |
| 5 |
| 6System.out.println(jedis.smembers("articleSet")); |
| 7 |
| 8System.out.println(jedis.spop("articleSet")); |
| 9System.out.println(jedis.smembers("articleSet")); |
| 10System.out.println(jedis.srandmember("articleSet")); |
| 11jedis.sadd("articleSet2","0022", "0004", "0021"); |
| 12System.out.println(jedis.sinter("articleSet","articleSet2")); |
| 13 |
| 14jedis.close(); |
操作 zset
| 1 |
| 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")); |
| 11System.out.println(jedis.zcount("zset",2,3)); |
| 12 |
| 13Set<String> zset = jedis.zrangeByScore("zset", 2D, 3D); |
| 14System.out.println(zset); |
| 15 |
| 16System.out.println(jedis.zrange("zset", 0, -1)); |
| 17ScanResult<Tuple> zset1 = jedis.zscan("zset", ScanParams.SCAN_POINTER_START); |
| 18System.out.println(zset1.getCursor()); |
| 19System.out.println(zset1.getResult()); |
| 20jedis.close(); |
系统命令
| 1 |
| 2System.out.println("=========== server ============="); |
| 3System.out.println(jedis.dbSize()); |
| 4System.out.println(jedis.time()); |
| 5System.out.println(jedis.clientList()); |
| 6System.out.println(jedis.info()); |
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 |
| 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 |
| 29connected_clients:1 |
| 30client_longest_output_list:0 |
| 31client_biggest_input_buf:0 |
| 32blocked_clients:0 |
| 33 |
| 34 |
| 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 |
| 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 |
| 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 |
| 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 |
| 98used_cpu_sys:0.53 |
| 99used_cpu_user:0.27 |
| 100used_cpu_sys_children:0.00 |
| 101used_cpu_user_children:0.00 |
| 102 |
| 103 |
| 104cluster_enabled:0 |
| 105 |
| 106 |
| 107db0:keys=7,expires=0,avg_ttl=0 |
池化技术
和关系型数据库一样,Jedis 也封装了池化技术来管理 redis 连接。
| 1 |
| 2JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); |
| 3 |
| 4 |
| 5jedisPoolConfig.setBlockWhenExhausted(true); |
| 6jedisPoolConfig.setMaxTotal(200); |
| 7jedisPoolConfig.setMaxIdle(20); |
| 8jedisPoolConfig.setMinIdle(20); |
| 9 |
| 10jedisPoolConfig.setBlockWhenExhausted(true); |
| 11 |
| 12jedisPoolConfig.setMaxWaitMillis(5000); |
| 13 |
| 14jedisPoolConfig.setTestOnBorrow(true); |
| 15 |
| 16jedisPoolConfig.setTestWhileIdle(false); |
| 17 |
| 18jedisPoolConfig.setTimeBetweenEvictionRunsMillis(300000); |
| 19 |
| 20jedisPoolConfig.setMinEvictableIdleTimeMillis(300000); |
| 21 |
| 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 的命令介绍