日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

redis的操作 json对象实例

發(fā)布時(shí)間:2024/8/26 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis的操作 json对象实例 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.redis存儲(chǔ)是:key value格式的數(shù)據(jù),其中key都是字符串,value有5種不同的數(shù)據(jù)結(jié)構(gòu)

  value的數(shù)據(jù)結(jié)構(gòu):

    1.字符串類型:string

    2.哈希類型 hash :map格式

    3.列表類型 list:linkedlist格式。支持重復(fù)元素

    4.集合類型 set:不允許重復(fù)元素

    5.有序集合類型 sortset:不允許重復(fù)元素,且元素有順序

2.字符串類型 string

    1.存儲(chǔ):set key value

    2.獲取:get key

    3.刪除:del key

3.哈希類型 hash:

    1.存儲(chǔ):hset key field value

    2.獲取:hget key?field?

    3.刪除:hdel key?field?

jeids的操作

string數(shù)據(jù)結(jié)構(gòu)操作

//1.獲取連接
Jedis jedis = new Jedis("localhost", 6379);
//2.操
//存儲(chǔ)
jedis.set("username","zhangsan");
//獲取
String username = jedis.get("username");
System.out.println(username);

//可以使用setx方法存儲(chǔ)指定國(guó)旗時(shí)間的key value
jedis.setex("active",20,"hehe");//將active hehe鍵值對(duì)存入redis,并且20秒后自動(dòng)刪除鍵值對(duì)

//3.關(guān)閉連接
jedis.close();

hash數(shù)據(jù)結(jié)構(gòu)操作

//1.獲取連接
Jedis jedis = new Jedis("localhost", 6379);
//2.操作

//存儲(chǔ)
jedis.hset("user","name","lisi");
jedis.hset("user","age","23");
jedis.hset("user","gender","male");
//獲取
String name = jedis.hget("user", "name");
System.out.println(name);

//獲取hash的所有的map的數(shù)據(jù)
Map<String, String> user = jedis.hgetAll("user");

Set<String> set = user.keySet();
for (String key : set) {
String value = user.get(key);
System.out.println(key +":"+value);
}
//3.關(guān)閉連接
jedis.close(); ?

list數(shù)據(jù)結(jié)構(gòu)操作

//1.獲取連接
Jedis jedis = new Jedis("localhost", 6379);
//2.操作

//存儲(chǔ)
jedis.lpush("mylist","a","b","c");//從左邊存 cba
jedis.rpush("mylist","a","b","c");//從右邊存 abc
//獲取
List<String> mylist = jedis.lrange("mylist", 0, -1);
System.out.println(mylist);

//list彈出
String element = jedis.lpop("mylist");
System.out.println(element);

String element1 = jedis.rpop("mylist");
System.out.println(element1);

List<String> mylist2 = jedis.lrange("mylist", 0, -1);
System.out.println(mylist2);

//3.關(guān)閉連接
jedis.close();

set和sortedset數(shù)據(jù)結(jié)構(gòu)操作

//1.獲取連接
Jedis jedis = new Jedis("localhost", 6379);
//2.操作

//存儲(chǔ) 數(shù)字的作用是輸出按從小到大排列
jedis.zadd("mysorted",3,"亞瑟");
jedis.zadd("mysorted",30,"后羿");
jedis.zadd("mysorted",25,"孫悟空");

//獲取
Set<String> mysorted = jedis.zrange("mysorted", 0, -1);
System.out.println(mysorted);
//3.關(guān)閉連接
jedis.close();

?jedis連接池:

使用:1.創(chuàng)建jedispool連接池對(duì)象

   2.調(diào)用方法getResource()方法獲取jedis連接

?

//創(chuàng)建配置對(duì)象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);//最大活動(dòng)對(duì)象
config.setMaxIdle(10);//最大保持的連接數(shù)

//1.創(chuàng)建對(duì)象
JedisPool jedisPool = new JedisPool();

//2.獲取連接
Jedis jedis = jedisPool.getResource();

//3.使用
jedis.set("heheh","hahah");

//3.關(guān)閉連接
jedis.close();

?

案例:

1.提供一個(gè)頁(yè)面,是一個(gè)下拉框,其中是省份

2.頁(yè)面加載完成,發(fā)送ajax請(qǐng)求,加載省份

?

優(yōu)化:使用redis緩存一些不經(jīng)常發(fā)生變化的數(shù)據(jù)

Dao部分

dao接口類

package cn.itcast.dao;

import cn.itcast.domain.Province;

import java.util.List;

public interface ProvinceDao {
public List<Province> findAll();

}

dao實(shí)現(xiàn)類

package cn.itcast.dao.impl;

import cn.itcast.dao.ProvinceDao;
import cn.itcast.domain.Province;
import cn.itcast.util.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

public class ProvinceDaoImpl implements ProvinceDao {

//1.聲明成員變量
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

@Override
public List<Province> findAll() {
//2.定義sql
String sql = "select * from province";
//3.執(zhí)行sql
List<Province> list = template.query(sql, new BeanPropertyRowMapper<Province>(Province.class));
return list;
}
}

?

Service部分

service接口類

package cn.itcast.service;

import cn.itcast.domain.Province;

import java.util.List;

public interface ProvinceService {

public List<Province> findAll();

public String findAllJson();
}

service實(shí)現(xiàn)類

package cn.itcast.service.impl;

import cn.itcast.dao.ProvinceDao;
import cn.itcast.dao.impl.ProvinceDaoImpl;
import cn.itcast.domain.Province;
import cn.itcast.service.ProvinceService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.omg.CORBA.PRIVATE_MEMBER;
import redis.clients.jedis.Jedis;

import java.util.List;

public class ProvinceServiceImpl implements ProvinceService {
//聲明dao
private ProvinceDao dao = new ProvinceDaoImpl();

@Override
public List<Province> findAll() {
return dao.findAll();
}

@Override
public String findAllJson() {

//先從redis查詢數(shù)據(jù)
//1.獲取連接
Jedis jedis = new Jedis("localhost", 6379);
//2.操作
//獲取
String province_json = jedis.get("province");

//判斷province_json是否是null
if (province_json == null || province_json.length() == 0){
//redis沒(méi)數(shù)據(jù),從數(shù)據(jù)庫(kù)查詢
System.out.println("redis沒(méi)有數(shù)據(jù),查詢數(shù)據(jù)庫(kù)。。。。");

//數(shù)據(jù)查詢
List<Province> ps = dao.findAll();

//將list序列化為json
ObjectMapper mapper = new ObjectMapper();
try {
province_json = mapper.writeValueAsString(ps);
} catch (JsonProcessingException e) {
e.printStackTrace();
}

//將json數(shù)據(jù)存入數(shù)據(jù)庫(kù)中
jedis.set("province",province_json);

//歸還連接
jedis.close();

}else{
System.out.println("redis有數(shù)據(jù),查詢緩存。。。。");
}

return province_json;
}
}

?

Servlet部分

package cn.itcast.web.servlet;

import cn.itcast.domain.Province;
import cn.itcast.service.ProvinceService;
import cn.itcast.service.impl.ProvinceServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/provinceServlet")
public class ProvinceServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


// //調(diào)用service
// ProvinceService service = new ProvinceServiceImpl();
// List<Province> list = service.findAll();
// //序列化list為json
// ObjectMapper mapper = new ObjectMapper();
// String json = mapper.writeValueAsString(list);


//調(diào)用service查詢
ProvinceServiceImpl service = new ProvinceServiceImpl();
String json = service.findAllJson();
System.out.println(json);
//響應(yīng)結(jié)果
response.setContentType("application/json;charset=gbk");
response.getWriter().write(json);


}
} ?

?

Html部分

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/jquery-3.3.1.js"></script>
<script>
$(function () {
//發(fā)送ajax請(qǐng)求
$.get("provinceServlet",{},function (data) {
//獲取select
var province = $("#province");
//遍歷json
$(data).each(function () {
//創(chuàng)建option標(biāo)簽,append追加option
var option = "<option name='"+this.id+"'>"+this.name+"</option>";
province.append(option)
})


})
})
</script>
</head>
<body>

<select name="" id="province">
<option value="">--請(qǐng)選擇省份--</option>
</select>


</body>
</html>

?

轉(zhuǎn)載于:https://www.cnblogs.com/yzcstart/p/11203409.html

總結(jié)

以上是生活随笔為你收集整理的redis的操作 json对象实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。