在java中使用redis

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 在java中使用redis很简单,只需要添加jedist.jar,通过它的api就可以了。而且,api和redis的语法几乎完全相同。以下简单的测试: 参考:http://www.runoob.com/redis/redis-java.

在java中使用redis很简单,只需要添加jedist.jar,通过它的api就可以了。而且,api和redis的语法几乎完全相同。以下简单的测试:

参考:http://www.runoob.com/redis/redis-java.html

  1 package com.test.redis;
  2 
  3 import org.junit.Test;
  4 import redis.clients.jedis.Jedis;
  5 
  6 import java.util.HashMap;
  7 import java.util.List;
  8 import java.util.Map;
  9 import java.util.Set;
 10 
 11 /**
 12  * 学习使用redis
 13  * Created by Administrator on 2016/2/19.
 14  */
 15 public class HelloRedis {
 16     private static final Jedis jedis = new Jedis("127.0.0.1",6379);
 17 
 18     public static void main(String[] args) {
 19         jedis.set("test","Hello Redis");
 20         String test = jedis.get("test");
 21         System.out.println(test);
 22         jedis.del("test");
 23     }
 24 
 25     /**
 26      * 一些操作
 27      */
 28     @Test
 29     public void testOption(){
 30         //查看redis是否运行
 31         System.out.println(jedis.ping());
 32         String s = jedis.flushDB();
 33         System.out.println("清空后:"+s);
 34 
 35         System.out.println(jedis.echo("foo"));
 36 
 37         jedis.set("foo","存储变量foo");
 38         Boolean is = jedis.exists("foo");
 39         System.out.println("foo是否存在:"+is);
 40 
 41         Set<String> keys = jedis.keys("*");
 42         System.out.println("数据库中所有的keys:"+keys);
 43 
 44         Set<String> keys1 = jedis.keys("f*");
 45         System.out.println("数据库中以 f 为前缀的keys"+keys1);
 46 
 47         String foo = jedis.type("foo");
 48         System.out.println("foo的类型:"+foo);
 49 
 50         jedis.del("foo");
 51     }
 52 
 53     /**
 54      * jedis存储字符串
 55      */
 56     @Test
 57     public void testString(){
 58         jedis.flushDB();
 59         //--添加数据--
 60         jedis.set("name","miao");
 61         System.out.println("取出name:"+jedis.get("name"));
 62 
 63         //取出元数据,并修改
 64         String name = jedis.getSet("name", "被取出后修改");
 65         System.out.println("取出:"+name+" 修改:"+jedis.get("name"));
 66         String name1 = jedis.getrange("name", 0,5 );
 67         System.out.println("获取value值并截取(中文容易乱码):"+name1);
 68         //--覆盖--
 69         jedis.set("name","覆盖了");
 70         System.out.println("取出重设置后的name:"+jedis.get("name"));
 71         //拼接
 72         jedis.append("name"," be stronger!");
 73         System.out.println("拼接后的name:"+jedis.get("name"));
 74 
 75         jedis.del("name");
 76         System.out.println("删除后的name:"+jedis.get("name"));
 77         //设置多个
 78         jedis.mset("name","miao","age","25","birth","1991-02-22");
 79         jedis.incr("age");//+1
 80         System.out.println(jedis.get("name")+"-"+jedis.get("age")+"-"+jedis.get("birth"));
 81         jedis.del("name","age","birth");
 82     }
 83 
 84     /**
 85      * redis操作map
 86      */
 87     @Test
 88     public void testMap(){
 89         jedis.flushDB();
 90         //--添加数据--
 91         Map<String,String> map = new HashMap<>();
 92         map.put("name","miao");
 93         map.put("age","35");
 94         map.put("birth","1991-02-33");
 95         jedis.hmset("user",map);
 96         //取出
 97         List<String> user = jedis.hmget("user","name","age","birth");
 98         System.out.println(user);
 99         Map<String, String> user1 = jedis.hgetAll("user");//取出user
100         System.out.println("user1="+user1);
101 //        jedis.del("user");
102 
103         //删除某个属性
104         jedis.hdel("user","birth");
105         System.out.println(jedis.hmget("user","name","age","birth"));
106         Long count = jedis.hlen("user");//user的属性的个数
107         System.out.println("属性个数:"+count);
108         Boolean is = jedis.exists("user");//是否存在
109         System.out.println("是否存在:"+is);
110         Set<String> ukeys = jedis.hkeys("user");//user的所有属性
111         System.out.println(ukeys);
112         List<String> uvals = jedis.hvals("user");//user的所有属性值
113         System.out.println(uvals);
114 
115         jedis.del("user");
116     }
117 
118     /**
119      * redis操作list
120      */
121     @Test
122     public void testList(){
123         jedis.flushDB();
124         //查看
125         List<String> users = jedis.lrange("users", 0, -1);
126         System.out.println("list:"+users);
127         //向左插入
128         jedis.lpush("users","miao");
129         jedis.lpush("users","rui");
130         jedis.lpush("users","feng");
131         //向右插入
132         jedis.rpush("users","ming");
133         jedis.rpush("users","hong");
134         jedis.rpush("users","xing");
135         System.out.println("(注意顺序)插入的结果:"+jedis.lrange("users",0,-1));
136         //长度
137         Long len = jedis.llen("users");
138         System.out.println("list长度:"+len);
139         //子串
140         System.out.println("取出索引0到1的数据:"+jedis.lrange("users",0,1));
141         //修改单个值
142         jedis.lset("users",0,"我变成第一个");
143         System.out.println("修改单个值后:"+jedis.lrange("users",0,-1));
144         //获取指定下标的值
145         String users1 = jedis.lindex("users", 0);
146         System.out.println("下标0为:"+users1);
147         //删除指定下标的值
148         Long lrem = jedis.lrem("users", 0,"我变成第一个");
149         System.out.println("删除下标0结果:"+lrem+"   |"+jedis.lrange("users",0,-1));
150         //删除区间之外的值
151 //        jedis.ltrim("users",1,2);
152         //出栈
153         String users2 = jedis.lpop("users");
154         System.out.println("左出栈:"+users2+"  |"+jedis.lrange("users",0,-1));
155         String users3 = jedis.rpop("users");
156         System.out.println("右出栈:"+users3+"  |"+jedis.lrange("users",0,-1));
157 
158         jedis.del("users");
159         System.out.println(jedis.lrange("users",0,-1));
160     }
161 
162     /**
163      * jedis set
164      */
165     @Test
166     public void testSet(){
167         //添加
168         jedis.sadd("user","miao");
169         jedis.sadd("user","rui");
170         jedis.sadd("user","feng");
171         jedis.sadd("user","ming");
172         jedis.sadd("user","hong");
173         jedis.sadd("user","xing");
174         //查看
175         Set<String> user = jedis.smembers("user");
176         System.out.println("set:   "+user);
177         //移除
178         jedis.srem("user","miao");
179         System.out.println("移除后: "+jedis.smembers("user"));
180         //判断是否存在
181         Boolean is = jedis.sismember("user", "rui");
182         System.out.println("rui是否存在: "+is);
183         //随机取出一个
184         String one = jedis.srandmember("user");
185         System.out.println(one);
186         System.out.println(jedis.srandmember("user",2));
187         //返回个数
188         Long count = jedis.scard("user");
189         System.out.println("user个数:"+count);
190 
191         jedis.del("user");
192 
193     }
194 
195     /**
196      * zset
197      * 有序的set
198      */
199     @Test
200     public void testZset(){
201         jedis.flushDB();
202         //添加
203         jedis.zadd("zkey",12.1,"十二");
204         jedis.zadd("zkey",11.1,"11");
205         jedis.zadd("zkey",21.1,"20");
206         jedis.zadd("zkey",41.1,"41");
207         jedis.zadd("zkey",4,"4");
208         //查看
209         Set<String> zkey = jedis.zrange("zkey", 0, -1);
210         System.out.println("可以看到是以score排序的:"+zkey);
211     }
212 
213     /**
214      * 排序
215      */
216     @Test
217     public void testSort(){
218         jedis.del("list");
219         jedis.rpush("list","1");
220         jedis.rpush("list","4");
221         jedis.rpush("list","2");
222         jedis.rpush("list","20");
223         jedis.rpush("list","5");
224         jedis.rpush("list","6");
225         jedis.rpush("list","67");
226         System.out.println(jedis.lrange("list",0,-1));
227         System.out.println("排序:"+jedis.sort("list"));
228         System.out.println("排序不影响原存储:"+jedis.lrange("list",0,-1));
229     }
230 
231 
232 
233 }

 





唯有不断学习方能改变! -- Ryan Miao
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
4月前
|
负载均衡 NoSQL 算法
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
这篇文章是关于Java面试中Redis相关问题的笔记,包括Redis事务实现、集群方案、主从复制原理、CAP和BASE理论以及负载均衡算法和类型。
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
|
12天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
73 26
|
1月前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
38 1
|
2月前
|
缓存 NoSQL Java
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
71 3
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
|
3月前
|
JSON NoSQL Java
redis的java客户端的使用(Jedis、SpringDataRedis、SpringBoot整合redis、redisTemplate序列化及stringRedisTemplate序列化)
这篇文章介绍了在Java中使用Redis客户端的几种方法,包括Jedis、SpringDataRedis和SpringBoot整合Redis的操作。文章详细解释了Jedis的基本使用步骤,Jedis连接池的创建和使用,以及在SpringBoot项目中如何配置和使用RedisTemplate和StringRedisTemplate。此外,还探讨了RedisTemplate序列化的两种实践方案,包括默认的JDK序列化和自定义的JSON序列化,以及StringRedisTemplate的使用,它要求键和值都必须是String类型。
redis的java客户端的使用(Jedis、SpringDataRedis、SpringBoot整合redis、redisTemplate序列化及stringRedisTemplate序列化)
|
2月前
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
68 4
|
2月前
|
缓存 NoSQL Java
Java中redis面试题
Java中redis面试题
51 1
|
3月前
|
存储 缓存 NoSQL
【Java面试题汇总】Redis篇(2023版)
Redis的数据类型、zset底层实现、持久化策略、分布式锁、缓存穿透、击穿、雪崩的区别、双写一致性、主从同步机制、单线程架构、高可用、缓存淘汰策略、Redis事务是否满足ACID、如何排查Redis中的慢查询
【Java面试题汇总】Redis篇(2023版)
|
1月前
|
存储 NoSQL Java
Java 使用 Redis
10月更文挑战第22天
44 0
|
2月前
|
NoSQL Java API
Java操作redis
Java操作redis
下一篇
DataWorks