当前位置: 首页 > wzjs >正文

金平党建网站建设方案市场推广方案和思路

金平党建网站建设方案,市场推广方案和思路,什么是优化珍珠,wordpress 心理测试String常见命令 我们在工程中常见的方式: 我们在项目中使用String时,使用这种方式我们在redis视图工具中看见的就是层级结构 set heima:user:1 {"name":"lihua","age":"11"} 我们在新增数据时可以直接使用…

String常见命令

我们在工程中常见的方式: 

我们在项目中使用String时,使用这种方式我们在redis视图工具中看见的就是层级结构

set heima:user:1 '{"name":"lihua","age":"11"}' 

我们在新增数据时可以直接使用setnx:如果存在就插入,失败就是返回0

Hash常见命令 

List类型的常见命令和用法:

SET类型常见命令

127.0.0.1:6379> sadd zhangsan lisi wangwu zhaoliu
(integer) 3
127.0.0.1:6379> sadd lisi wangwu mazi ergou
(integer) 3
127.0.0.1:6379> SCARD zhangsan
(integer) 3
127.0.0.1:6379> SINTER zhangsan lisi
1) "wangwu"
127.0.0.1:6379> sdiff zhangsan lisi
1) "zhaoliu"
2) "lisi"
127.0.0.1:6379> sunion zhangsan lisi
1) "ergou"
2) "lisi"
3) "wangwu"
4) "zhaoliu"
5) "mazi"
127.0.0.1:6379> sismember zhangsan lisi
(integer) 1
127.0.0.1:6379> sismember lisi zhangsan
(integer) 0
127.0.0.1:6379> srem zhangsan lisi
(integer) 1
127.0.0.1:6379> scard zhangsan'
Invalid argument(s)
127.0.0.1:6379> scard zhangsan
(integer) 2
127.0.0.1:6379> smembers zhangsan
1) "zhaoliu"
2) "wangwu"
127.0.0.1:6379>

 SortedSet常见命令:

java整合redis :

redis客户端:

我们进入官网之后可以查看我们java语言的客户端,标有五角星的是建议我们使用的。

进入官网之后我们可以看见当前建议使用的客户端。 

Jedis客户端:

导入依赖:
 <dependencies><!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.2.0</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>RELEASE</version></dependency></dependencies>
快速开始:
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;public class jedisTest {private Jedis jedis;@BeforeEach  //我们使用的是maven项目,使用的是junit5 这个注解是在所有的测试内容开始之前要执行的任务public void setUp() {//建立连接jedis =new Jedis("localhost", 6379);//选择使用的数据库jedis.select(0);System.out.println("建立连接完成");}@Testpublic void test() {//提前插入,后面一定会失败jedis.set("name","lihua");long setnx = jedis.setnx("name", "lihua");if(setnx>0){System.out.println("插入成功");}else{System.out.println("插入失败");}}@AfterEachpublic void tearDown() {jedis.close();System.out.println("关闭连接");}
}
hash类型:
/*** 尝试使用hash类型*/
@Test
public void testHash(){jedis.hset("user1","name","lihua");jedis.hset("user1","age","12");String name = jedis.hget("user1", "name");System.out.println("name:"+name);//获取map数据Map<String, String> map = jedis.hgetAll("user1");System.out.println("map = " + map);
}

其他的类型我们不在演示,他和我们直接使用redis时的命令是一致的,只要大家记得命令就就可以了。

解决Jedis的并发问题:

创建线程池:
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;/*** 创建jedis工厂*/
public class JedisConnectionFactory {private static JedisPool jedisPool;static{JedisPoolConfig config = new JedisPoolConfig();//最大连接数config.setMaxTotal(8);//设置最大空闲config.setMaxIdle(8);//最小空闲config.setMinIdle(0);//设置连接等待时间    默认是-1  就是一致等config.setMaxWaitMillis(1000L);jedisPool = new JedisPool(config, "127.0.0.1", 6379);}public static Jedis getInstance(){return jedisPool.getResource();}
}
使用连接池实现:
 private Jedis jedis;@BeforeEach  //我们使用的是maven项目,使用的是junit5 这个注解是在所有的测试内容开始之前要执行的任务public void setUp() {//建立连接jedis = JedisConnectionFactory.getInstance();//选择使用的数据库jedis.select(0);System.out.println("建立连接完成");}/*** 尝试使用连接池的方式获取jedis*/@Testpublic void testList(){String hget = jedis.hget("user1", "name");System.out.println(hget);}@AfterEachpublic void tearDown() {jedis.close();System.out.println("关闭连接");}

spring-boot整合redis

导入依赖:

对于我们的依赖,有的人可能在编写配置文件时,将线程池的参数直接配置的,但是没有引入我们的commons-pool的依赖,这是就会出现错误。

<!--配置redis依赖-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--为了并发条件,需要连接池common-pool2-->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId>
</dependency>
填写配置文件:
server:port: 8080
spring:redis:host: 127.0.0.1  # 小编装在了windows环境中了  如果是虚拟机的话,填自己的虚拟机地址port: 6379       #端口号,其实可以不配置,直接是直接使用默认值lettuce:pool:max-wait: -1msmax-idle: 8min-idle: 0max-active: 8# 千万注意如果使用连接时参数,必须引入我们的commons-pool依赖
注入RedisTemplate
@Autowired
private RedisTemplate redisTemplate;
测试代码:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
@SpringBootTest
public class PoolTest {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void test1() {/*** 如果不存在就直接插入*/Boolean b = redisTemplate.opsForValue().setIfAbsent("name", "李奤u");System.out.println(b);}@Testpublic void test2(){System.out.println(redisTemplate.opsForValue().get("name"));}
}

序列化和反序列化:

我们可以发现,我们直接进行存储时,我们的字符串被序列化为字节了,使用的是JDK的默认序列化方式,这样一个缺点是不便于阅读,另一个缺点是占用的空间大,所以我们可以设置我们的序列化方式,设置的方法入下:

 import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(factory);GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer=new GenericJackson2JsonRedisSerializer();redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);redisTemplate.setHashKeySerializer(RedisSerializer.string());redisTemplate.setKeySerializer(RedisSerializer.string());return redisTemplate;}
}

再次演示: 

序列化成功。 

StringTemplate: 

我们通过配置redisTemplate的方式实现了自定义的序列化和反序列化,但是我们在储存时会记录我们这个序列化的Object的类型,浪费存储空间,所以我们使用StringRedisrtrmplate来序列化和反序列化。

下面展示做法:

注意点:我们在编写实体类时,需要写一个默认构造函数,不然容易出现无法预料的错误。

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hdk.redis_boot.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;@SpringBootTest
public class TestString {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Testpublic void test() throws JsonProcessingException {/*** 我们尝试将user对象放置到redis中* 将user序列化为json字符串,他的序列胡和反序列化的操作交给程序猿节省空间*///我们展示时使用的时ObjectMapper  这个时我们的springMvc自带的序列化的工具,大家也可以使用hutool或者是fastJsonObjectMapper objectMapper = new ObjectMapper();//创建对象User user = new User(1,"王虎");//手动序列化String json = objectMapper.writeValueAsString(user);System.out.println("打印json字符串"+json);//将数据写入redisstringRedisTemplate.opsForValue().set("user1",json);//获取值String value =stringRedisTemplate.opsForValue().get("user1");//手动反序列化User user1 = objectMapper.readValue(value, User.class);System.out.println(user1);}}

RedisTemplate的Hash操作:

 @Testpublic void testHash(){stringRedisTemplate.opsForHash().put("user1","name","zhangsan");stringRedisTemplate.opsForHash().put("user1","age",11);}

http://www.dtcms.com/wzjs/52411.html

相关文章:

  • 建站程序免费下载搜索引擎营销分析
  • 常州哪家做网站便宜百度收录怎么弄
  • 网上购物的网站开发背景泰安网络推广培训
  • vue is做的购物网站关键词优化有哪些作用
  • 代理做网站的合同网络营销策划方案框架
  • 简易网站竞价排名是什么
  • wordpress虚拟资源主题教程seo招聘职责
  • 没有网站怎么做cpa赚钱网站策划报告
  • 厦门做企业网站谷歌搜索引擎镜像
  • 网站空间租用打广告
  • 群晖wordpress主机seo网络排名优化技巧
  • 企业管理顾问东莞网站建设网站维护推广的方案
  • 如何说服别人做网站百度公司招聘2022年最新招聘
  • 网站设计考虑因素国际新闻消息
  • 哪个网站做恒生指数最安全宁波网络营销推广咨询报价
  • 网站底部模板alexa排名查询统计
  • 咸阳软件开发公司西安seo包年服务
  • 网站建设策略武汉久都seo
  • 在上海做兼职在哪个网站好googleplay商店
  • 西安到北京疫情政策企业seo关键字优化
  • 六安找人做网站企业网站网页设计
  • 廊坊企业网站建设公司营销最好的方法
  • 合肥网站制作报购物网站排名
  • 广州注册公司代办理网站seo优化皆宣徐州百都网络不错
  • 做两个单页面网站大概多少钱北京百度关键词优化
  • 重庆潼南网站建设价格信息流广告投放
  • 技术支持 如皋网站建设百度帐号
  • 济南电子商务网站开发洛阳seo网站
  • 大连网站制作美工广州今日新闻头条新闻
  • 知名网站制作公司泉州seo排名扣费