import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import redis.clients.jedis.*;
public class Welcome extends HttpServlet
{
Jedis jedis;
public void init(ServletConfig sc) throws ServletException
{
Jedis jedis = new Jedis("localhost");
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
{
int count=0;
PrintWriter out=response.getWriter();
jedis.set("k1","123");//This statement is not working
}
public void destroy(){}
}
我一直在尝试使用jedis访问密钥及其在redis中的值。它适用于普通的java代码。但是当谈到servlet时,它无法正常工作。我无法找到原因。请详细回答我如何在servlet中使用jedis.set()。
答案 0 :(得分:0)
即便如此,由于线程安全,我们不应该使用Jedis对象作为实例变量。而不是这样,我们通过实现ContextListener或资源注入在ServletContext中使用连接对象。我认为在使用Servlet实例时我们总是考虑线程安全性。单个Jedis实例不是线程安全的!要么;使用JedisPool。它是线程安全的。
JedisPool pool = new JedisPool(new JedisPoolConfig()," localhost");