电商笔记-08(Reids展示品牌名称与价格排序简单算法.PS:特绕)
来源:互联网 发布:儋州市政务网通知公布 编辑:程序博客网 时间:2024/06/11 07:37
分页&排序&关键字搜索的注意点
1,用户根据关键字搜索,查询数据,”下一页”链接中要携带条件参数
2,用户根据关键字搜索,查询数据,点击”价格”排序,点击”下一页”链接中要携带条件参数和下一页的排序风格
<注意:下一页的排序方式要和上一页的排序风格一样,不然就会出现,上一页是升序,下一页时降序.所以可以将”记忆排序”放到上一页/下一页链接上>
“价格”排序优化算法分析
- keyword : 用户输入的关键字
- priceSort :排序方式
- sort:后台将反转后的排序规则传送到页面的变量
用户第一次根据关键字查询展示页面时
window.location.href = "/search?keyword=" + $("#keyword").val()+"&priceSort=${sort2}";
后台controller先调用service
第一次为null不会排序
//价格排序 price asc | price desc if(priceSort != null && !priceSort.equals("")){ solrQuery.addSort(new SortClause(priceSort.split(" ")[0],priceSort.split(" ")[1])); }
但是执行service回来后
如果关键字为空,或者为降序就将升序规则发送给页面
if(priceSort != null && priceSort.equals("price asc")){ priceSort= "price desc"; }else{ priceSort = "price asc"; } //将排序顺序,发送到"价格"链接,点击"价格才会生效" model.addAttribute("sort",priceSort);
当用户点击价格,进行排序时
完成了第一次排序
window.location.href = "/search?keyword=${keyword}&priceSort=${sort}";
用户再次点击
//再次点击价格,就会发生反转 if(priceSort != null && priceSort.equals("price asc")){ priceSort= "price desc"; }else{ priceSort = "price asc"; } //将排序顺序,发送到价格排序链接,点击"价格才会生效" model.addAttribute("sort",priceSort);
“记忆功能”
用户第一次根据关键字搜索商品,点击”价格”升序排列之后,又换了别的关键字进行搜索.搜索的结果在没有点击”价格”排序的情况下,依然是以升序排列展示的.只需要在用户每次点击”价格”排序之前记录下排序方式,发送给页面,拼接到”搜索”链接这样用户在每次搜索时,就会按照之前的排序风格,进行排序.
Redis优化品牌显示
为了减少与数据库的交互(减少与mysql的交互),所以就将查询最新的品牌名称存到redis”缓存”中.在这里我只是做了在修改时更新.正式开发时,只要是与品牌相关的操作都要进行更新.
redis与mysql进行品牌数据同步的时间点:
添加品牌的时候,redis同步添加
修改品牌的时候,redis同步修改
删除品牌的时候,redis同步删除
redis配置
<!-- redis 的配置 --> <bean id = "jedis" class="redis.clients.jedis.Jedis" > <constructor-arg value="192.168.56.109" index = "0" type="java.lang.String"/> <constructor-arg value="6379" index="1"/> </bean>
测试
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext.xml")public class JedisDemo {@Autowiredprivate Jedis jedis;@Testpublic void demo01(){ jedis.hsetnx("brand", "1", "meilida"); jedis.hsetnx("brand", "2", "jieante"); jedis.hsetnx("brand", "3", "feige");}@Testpublic void demo02(){ System.out.println(jedis.hget("brand", "1")); System.out.println(jedis.hget("brand", "2")); System.out.println(jedis.hget("brand", "3"));}}
同步到redis
// 品牌的修改@Overridepublic void update(Brand brand) { brandDao.update(brand); // 查询当前id最新的商品信息 Brand findById = brandDao.findById(brand.getId()); // 在用户将更新的品牌信息更新到数据时,redis中同样也要进行同步 jedis.hset("brand", String.valueOf(findById.getId()), findById.getName());}
前台获取
//前台获取品牌名称和品牌id@Overridepublic List<Brand> findBrandName() { List<Brand> brands = new ArrayList<>(); //获取所有的品牌 Map<String, String> map = jedis.hgetAll("brand"); for (Entry<String, String> entry : map.entrySet()) { Brand brand = new Brand(); brand.setId(Long.parseLong(entry.getKey())); brand.setName(entry.getValue()); brands.add(brand); } return brands;}
阅读全文
0 0
- 电商笔记-08(Reids展示品牌名称与价格排序简单算法.PS:特绕)
- reids 笔记
- 品牌电商成本核算与精细化成本控制
- 电商搜索与分词算法简单记录
- python笔记:简单的查找与排序算法
- 《Java数据结构与算法》笔记-CH3简单排序
- 电商分类展示
- 简单的排序算法笔记
- reids支持排序
- 数据结构与算法-简单排序
- Reids的简单使用
- angular——按名称找商品,价格排序
- 百度计算广告学沙龙学习笔记 - 品牌展示广告
- 【算法】简单插入排序与希尔排序
- 名称:ps
- 林平:品牌电商转化率分析
- 国产手机品牌冲击电商平台
- [数据结构与算法]简单选择排序算法
- babel-polyfill让你放心用es6做开发
- spring 框架配置类
- Java中集合与数组互转总结
- JSONP跨域,CORS跨域,Hybrid APP跨域
- css类选择器使用
- 电商笔记-08(Reids展示品牌名称与价格排序简单算法.PS:特绕)
- 【安全牛学习笔记】ACUNETIX WEB VULNERABILITY SCANNER
- 文章标题
- Xcode使用系统工具自动增加version number
- 解决 div或者a标签的高度比里面的img高度多了5px 问题
- CSS外边距及盒子居中对齐
- << >> & | ^ 位运算
- Hello protobuf !
- RestTemplate上传文件总结