本文目录一览:
- 1、java 中redis 如何使用?
- 2、怎么在java中使用redis
- 3、怎样使用redis缓存,java代码
- 4、java操作redis有哪些方法
- 5、redis client使用小结
- 6、redis java 有什么用
java 中redis 如何使用?
这是我之前写的代代码,可以参考一下:
import java.util.Set;
import com.google.gson.Gson;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class App {
public static void main(String[] args) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(5);
config.setMaxWaitMillis(10000);
config.setTestOnBorrow(false);
JedisPool jedisPool = new JedisPool(config, "127.0.0.1", 6379);
Jedis jedis = jedisPool.getResource();
jedis.flushDB();
jedis.set("name", "Tom");
User user = new User(1, "Tom", "User");
Gson gson = new Gson();
String json = gson.toJson(user);
jedis.set("user1", json);
SetString keys = jedis.keys("*");
for (String key : keys) {
System.out.println(key);
}
}
}
如果有疑问,可以随时追问。
怎么在java中使用redis
public class RedisListJava { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost"); System.out.println("Connection to server sucessfully"); //存储数据到列表中 jedis.lpush("tutorial-list", "Redis"); jedis.lpush("tutorial-list", "Mongodb"); jedis.lpush("tutorial-list", "Mysql"); // 获取存储的数据并输出 ListString list = jedis.lrange("tutorial-list", 0 ,5); for(int i=0; ilist.size(); i++) { System.out.println("Stored string in redis:: "+list.get(i)); } }}
怎样使用redis缓存,java代码
应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql。
同时要注意避免冲突,在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。
这样处理,主要是实时读写redis,而mysql数据则通过队列异步处理,缓解mysql压力,不过这种方法应用场景主要基于高并发,而且redis的高可用集群架构相对更复杂,一般不是很推荐。
java操作redis有哪些方法
电脑安装Redis,然后通过JRedis(jar包)下的JRedis redis = new JRedis(address,port);就可以操作了,比连接数据库还简单,如果是windows的话 建议装虚拟机用linux安装redis,其他的只要你懂redis,用java操作redis太简单了
redis client使用小结
本文记录了使用redis client的基本配置和连接超限的问题
java端的redis client使用的是jedis,他的连接池实现是基于Apache Commons Pool 2,配置也参考的GenericObjectPoolConfig,分别是minIdle,maxIdle,maxTotal,其中maxTotal包含了活跃和非活跃的连接总数
另外timeout是在Jedis的构造函数里指定的,他同时指定了connectionTimeout(最大连接时间)和soTimeout(最大响应时间 )
客户端配置就上面几个,用起来还是挺简单的,但是用的过程中还是会遇到一些问题,比如ERR max number of clients reached,有可能会是以下几个原因:
redis server最大连接数的配置由maxclients决定,2.6以后的版本默认值是10000,如果设置的值超过了操作系统的最大值限制,则会在启动的时候给出提示
一般情况下,超过10000的最大连接数是使用上的问题。首先redis服务端默认的timout配置的是0,即不会关闭连接,即便这个连接已经空闲很久,这时候如果客户端在重启前没有关闭连接或者说中间有防火墙之类的断开了连接,redis 服务端将会永久保留这些连接,这时候只要配置timeout即可
除了timeout也还可以通过keepalive配置来解决,比如如果你的redis角色是sentinel,那么redis里的timeout的配置是不生效的。
这里的keepalive指的是TCP协议层的配置,他有三个参数影响:
连接超时公式为:
这个时间还是挺久的,redis服务端在3.2版本已经以后,默认设置了tcp_keepalive_time为300秒(以前的版本默认为0,也就是不启用)
配置上这个参数之后,对于一些客户端没有正常关闭的场景也能及时的关闭
另外说到客户端的正确配置,如果是使用Spring的话,只要配置下bean的destroy-method,在这里关闭连接池即可,如果没有用Spring,则要自己注册一个ShutdownHook
1. redis报-ERR max number of clients reached错误
2. Custom Configuration of TCP Socket Keep-Alive Timeouts
3. Redis Clients Handling
4. Sentinel最大连接数
redis java 有什么用
Java连接redis的使用示例
Redis是开源的key-value存储工具,redis通常用来存储结构化的数据,因为redis的key可以包含String、hash、listset和sorted list。
Redisclient支持多种语言,包括:c、C++、C#、php、java、python、go等语言,根据自己的开发语言,选择合适的redis client版本类型即可。我是使用java语言开发的,针对java语言,redis client也提供了多种客户端支持,按照推荐类型依次是:Jedis、Redisson、JRedis、JDBC-Redis、RJC、redis-protocol、aredis、lettuce。前两种类型是比较推荐的,我们采用了Redisson类型版本作为redisclient的使用。
Redisson版的redis可发工程搭建
1. 新建maven工程
2. 在pom.xml文件的dependencies节点下增加如下内容:
dependency
groupIdorg.redisson/groupId
artifactIdredisson/artifactId
version1.0.2/version
/dependency
dependency
groupIdorg.slf4j/groupId
artifactIdslf4j-log4j12/artifactId
version1.7.7/version
/dependency
3. 保存pom.xml后,等eclispe工程构建完成后即可进行开发了
开发示例
下面是演示连接redis服务器、保存读取concurrentMap对象、保存读取set对象和保存读取Queue对象的示例代码,代码比较简单,这里就不再详细讲解了,代码如下:
[java] view plaincopy
package com.my.test.redis;
import java.util.Queue;
import java.util.Set;
import java.util.concurrent.ConcurrentMap;
import org.redisson.Config;
import org.redisson.Redisson;
public class RedisExample {
/**
* @param args
*/
public static void main(String[] args) {
// 1.初始化
Config config = new Config();
config.setConnectionPoolSize(10);
config.addAddress("127.0.0.1:6379");
Redisson redisson = Redisson.create(config);
System.out.println("reids连接成功...");
// 2.测试concurrentMap,put方法的时候就会同步到redis中
ConcurrentMapString, Object map = redisson.getMap("FirstMap");
map.put("wuguowei", "男");
map.put("zhangsan", "nan");
map.put("lisi", "女");
ConcurrentMap resultMap = redisson.getMap("FirstMap");
System.out.println("resultMap==" + resultMap.keySet());
// 2.测试Set集合
Set mySet = redisson.getSet("MySet");
mySet.add("wuguowei");
mySet.add("lisi");
Set resultSet = redisson.getSet("MySet");
System.out.println("resultSet===" + resultSet.size());
//3.测试Queue队列
Queue myQueue = redisson.getQueue("FirstQueue");
myQueue.add("wuguowei");
myQueue.add("lili");
myQueue.add("zhangsan");
myQueue.peek();
myQueue.poll();
Queue resultQueue=redisson.getQueue("FirstQueue");
System.out.println("resultQueue==="+resultQueue);
// 关闭连接
redisson.shutdown();
}
}