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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

list redis 怎样做排行_redis实现商品销量排行榜

發布時間:2024/7/23 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 list redis 怎样做排行_redis实现商品销量排行榜 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前練習做過一個網上商城,采用SSM框架實現。該項目有一個商品排行榜模塊沒有實現,決定采用springboot+dubbo+redis實現該模塊。

1.新建springboot項目。

本項目的springboot版本號為:

org.springframework.boot

spring-boot-starter-parent

2.1.6.RELEASE

引入dubbo及redis起始依賴。

com.alibaba.boot

dubbo-spring-boot-starter

0.2.0

org.springframework.boot

spring-boot-starter-data-redis

2.application.properties中配置如下信息

dubbo.application.name = baba-product-rank

dubbo.registry.address=127.0.0.1:2181 #zookeeper地址及端口號

dubbo.registry.protocol=zookeeper

dubbo.protocol.name=dubbo

dubbo.protocol.port=20881

#配置redis服務器

spring.redis.host=192.168.1.109 #redis服務器地址

spring.redis.port=6379

3.創建ProductRank類,并實現序列化

importjava.io.Serializable;public class ProductRank implementsSerializable {privateString productId;privateString productName;privateString price;privateString imgUrl;publicString getProductId() {returnproductId;

}public voidsetProductId(String productId) {this.productId =productId;

}publicString getProductName() {returnproductName;

}public voidsetProductName(String productName) {this.productName =productName;

}publicString getPrice() {returnprice;

}public voidsetPrice(String price) {this.price =price;

}publicString getImgUrl() {returnimgUrl;

}public voidsetImgUrl(String imgUrl) {this.imgUrl =imgUrl;

}

}

4.新建service接口,創建該service與ProductRank類時應注意類路徑與之前項目路徑一致(dubbo引用服務時要求)。

importcn.itcast.core.bean.ProductRank;importjava.util.List;importjava.util.Set;public interfaceProductRankService {//若沒有該數據記錄則添加該數據以及score 若有則直接給score加count

public void zSetAdd(ProductRank productRank, doublecount);

//獲取(end-begin)個記錄的排名public ListgetSetRank(Long begin, Long end);

}

5.創建redisconfg類,用來向容器中注入redisTemplate以及zSetOperations。

importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.data.redis.connection.RedisConnectionFactory;importorg.springframework.data.redis.core.RedisTemplate;importorg.springframework.data.redis.core.ZSetOperations;importorg.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;importorg.springframework.data.redis.serializer.StringRedisSerializer;importcom.fasterxml.jackson.annotation.JsonAutoDetect;importcom.fasterxml.jackson.annotation.PropertyAccessor;importcom.fasterxml.jackson.databind.ObjectMapper;

@Configurationpublic classRedisConfig {

@Bean

@SuppressWarnings("all")public RedisTemplateredisTemplate(RedisConnectionFactory factory) {

RedisTemplate template = new RedisTemplate();

template.setConnectionFactory(factory);

Jackson2JsonRedisSerializer jackson2JsonRedisSerializer= new Jackson2JsonRedisSerializer(Object.class);

ObjectMapper om= newObjectMapper();

om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);

om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);

jackson2JsonRedisSerializer.setObjectMapper(om);

StringRedisSerializer stringRedisSerializer= newStringRedisSerializer();//key采用String的序列化方式

template.setKeySerializer(stringRedisSerializer);//hash的key也采用String的序列化方式

template.setHashKeySerializer(stringRedisSerializer);//value序列化方式采用jackson

template.setValueSerializer(jackson2JsonRedisSerializer);//hash的value序列化方式采用jackson

template.setHashValueSerializer(jackson2JsonRedisSerializer);

template.afterPropertiesSet();returntemplate;

}

@Beanpublic ZSetOperations zSetOperations(RedisTemplateredisTemplate) {returnredisTemplate.opsForZSet();

}

}

6.創建serviceimpl實現類。

importcn.itcast.core.bean.ProductRank;importcom.alibaba.dubbo.config.annotation.Service;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.data.redis.core.RedisTemplate;importorg.springframework.data.redis.core.ZSetOperations;importorg.springframework.stereotype.Component;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importjava.util.Set;

@Service //暴露服務

@Componentpublic class ProductRankServiceImpl implementsProductRankService{

@AutowiredprivateRedisTemplate redisTemplate;

@Autowiredprivate ZSetOperationszSetOperations;

@Overridepublic void zSetAdd(ProductRank productRank,doublecount) {

String sortSetName= "product:rank";

zSetOperations.incrementScore(sortSetName,productRank,count);

}

@Overridepublic ListgetSetRank(Long begin, Long end) {

List list = new ArrayList<>();

String sortSetName= "product:rank";

Set set=zSetOperations.reverseRange(sortSetName,begin,end);

Iterator it=set.iterator();while(it.hasNext()){

ProductRank p=(ProductRank)it.next();

list.add(p);

}returnlist;

}

}

7.起始類上添加@EnableDubbo注解

@EnableDubbo

@SpringBootApplicationpublic classBabaProductRankApplication {public static voidmain(String[] args) {

SpringApplication.run(BabaProductRankApplication.class, args);

}

}

8.在網上商城項目中引入dubbo依賴

com.alibaba

dubbo

2.6.2

org.apache.curator

curator-framework

2.12.0

9.在與新建springboot項目中相同路徑下復制service接口類與ProductRank類。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

如圖所示。

10.創建consumer.xml配置文件,引用服務。

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd

http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd

http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

11.使用注解注入,并調用,向redis中插入數據。

使用redis-manager軟件,查看向redis中添加的數據,如圖。

12.調用redis中的數據并顯示在頁面上。

在jsp頁面上顯示:

結果如下圖。

總結

以上是生活随笔為你收集整理的list redis 怎样做排行_redis实现商品销量排行榜的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。