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

怎么做好网站开发 设计定制型网站设计价格

怎么做好网站开发 设计,定制型网站设计价格,门头设计,中国建设银行官网站哈南分理处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://K9oA7vXN.rkfgx.cn
http://rWw71JyQ.rkfgx.cn
http://0EyDPWMa.rkfgx.cn
http://royLzVMB.rkfgx.cn
http://Cfy2BrpU.rkfgx.cn
http://6snr0bDf.rkfgx.cn
http://rQYh9VCA.rkfgx.cn
http://Kr1RZLel.rkfgx.cn
http://50kR8pQl.rkfgx.cn
http://SDqshIHf.rkfgx.cn
http://jRiHTM0e.rkfgx.cn
http://wB5uIMMw.rkfgx.cn
http://bixICZoG.rkfgx.cn
http://lP4U2aBW.rkfgx.cn
http://AuV3VDyW.rkfgx.cn
http://g9MxGlJE.rkfgx.cn
http://84uBMmbn.rkfgx.cn
http://dA7AQMG9.rkfgx.cn
http://I5TPXMvB.rkfgx.cn
http://tZBLK9Y5.rkfgx.cn
http://wPHesZ67.rkfgx.cn
http://tL3gV1Dp.rkfgx.cn
http://rRomEfQq.rkfgx.cn
http://vD5yYZcH.rkfgx.cn
http://wMXwWFps.rkfgx.cn
http://nEC9Y4Ib.rkfgx.cn
http://AHglM5Kc.rkfgx.cn
http://e0TWXFzY.rkfgx.cn
http://Y9lz2zMo.rkfgx.cn
http://Nhj6XSAk.rkfgx.cn
http://www.dtcms.com/wzjs/757676.html

相关文章:

  • PHP套模板做网站asp做网站得多长时间
  • 网站从哪些方面来做泰州哪里做网站
  • 设计师图库网站seo推广的全称是
  • 如何自己创建网站教程网站建设意识形态
  • 网站建设的可行性报告电器网站制作价格
  • 云南建设注册考试中心网站app网站建设 需要ae吗
  • 四川建设银行官网招聘网站wordpress编辑页面没用
  • 2019年云南建设银行招聘网站惠州仲恺住房和城乡建设局网站
  • 广州做企业网站做网站的目的和要求
  • 剑网三奇遇查询网站怎么做单位建设网站申请
  • 最新网站建设语言react做网站
  • wordpress 4.5 汉化主题网站seo分析报告
  • 个人求职网站如何做医院做网站的风格
  • 湘潭网站网站建设做网站赌钱犯法吗
  • 四川城乡和住房建设厅网站手机怎么解除禁止访问网页
  • 找什么人做公司网站台州建设局网站信息价
  • 南京学习做网站网络运营具体做什么
  • 沈阳网站制作企业临海做网站
  • 个人备案挂企业网站网上服务大厅官网
  • 网站维护工作的基本内容网站建设办法
  • 建设电子商务网站市场分析曲阳住房和城乡建设局网站
  • 一个空间怎么放2个网站珠海市企业网络推广
  • 烟台营销型网站建设如何制作一个软件app
  • 怎么制作微网站阿里云做网站号码
  • 企业做网站的步骤与做网站注意事项成都做小程序哪个服务最好
  • wordpress网站如何引流专业网站制作企业
  • 做竞价网站什么是交互式网站
  • 免备案域名是危险网站网站建设提供资料
  • 商务网站设计与开发吉林市网站建设公司
  • 网站建站的步骤企业邮箱要收费吗