Redis缓存数据库商品,ElasticSearch搜索

redis
keys: redis> keys product

  • view_product
  • view_product_index
  • view_product_category_{categoryId}_index
  • productImage_index

ElasticSearch

indexName: ehaitao
typeName: view_product
id: {productId}

目的

完成一下目的:
  1. 获取商品速度快
  2. 基于时间戳获取商品,主要是为客户端提供服务,即在手机上浏览商品的向上或者向下的滑动,传到后台一个时间戳和接受的页面大小,然后后台返回数据
  3. 基于列别和时间戳获取商品
  4. 基于商品名称、类别、描述、价格等筛选条件,且基于时间戳的商品搜索

详细设计说明

商品缓存

商品缓存包含:
keys存储类型说明
view_product_indexSortedSet基于时间戳的商品索引
view_producthash商品信息
view_product_category_{categoryId}_indexSortedSet基于类别存储的商品索引

相关命令:

#zadd keyname socre memeber #添加单个商品索引
zadd view_product {actionTime} {productId}
zadd view_product_category_{categoryId}_index {actionTime} {productId}

#hset field value #添加单个商品信息
hset {productId} {productJsonString}

#hget field value #获取一个商品信息
hget {productId}

#hmget field [field ...] #一次获取多个商品信息
hmget {productId} {productId} {productId} {productId}

解释:

{actionTime}:商品的更新时间 {productId}:商品的id {categoryId}: 商品类别id {productJsonString}:商品详细json字符串

e.g:
将商品下列商品存入/更新到缓存
productIdcategoryIdnameactionTimecontent
21商品11418698459001这是商品1的json字符串
32商品21418698459002这是商品2的json字符串
51商品31418698459003这是商品3的json字符串

zadd view_product_index 1418698459001 1
zadd view_product_index 1418698459002 2
zadd view_product_index 1418698459003 3

zddd view_product_category_1_index 1418698459001 1
zddd view_product_category_1_index 1418698459003 3
zddd view_product_category_2_index 1418698459002 2

hset view_product 1 "这是商品1的json字符串" 
hset view_product 2 "这是商品2的json字符串" 
hset view_product 3 "这是商品3的json字符串"

#ElasticSearch
curl -XPUT 'http://localhost:9200/ehaitao/view_product/1' -d "这是商品1的json字符串" 
curl -XPUT 'http://localhost:9200/ehaitao/view_product/2' -d "这是商品2的json字符串" 
curl -XPUT 'http://localhost:9200/ehaitao/view_product/3' -d "这是商品3的json字符串"

图片信息缓存

图片信息缓存包含:
keys存储类型说明
productImage_indexSortedSet基于时间戳的图片信息

#zadd keyname socre memeber #添加单个图片信息
zadd view_product {productId} {producImageJsonString}

解释:

{producImageJsonString}:商品图片详情json字符串

实例应用

手机端刷新商品
页面大小:8
时间戳:timestamp

向上刷新:
#ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 按 score 值递增(从小到大)次序排列
#zrangebyScore view_product fromScore endSocre
#zrangebyScore view_product fromTime endTime

#zrangebyScore key min max offset count
zrangebyScore view_product timestamp Ineger.MAX 0 8

向下刷新:
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] 按 score 值递减(从大到小)的次序排列
#ZREVRANGEBYSCORE view_product fromScore endSocre
#ZREVRANGEBYSCORE view_product fromTime endTime

#ZREVRANGEBYSCORE key min max offset count
ZREVRANGEBYSCORE view_product timestamp 0 0 8

=======================================================================================
h2. 附录

  1. redis->Hash http://redis.readthedocs.org/en/latest/hash/index.html
  2. redis->SortedSet http://redis.readthedocs.org/en/latest/sorted_set/index.html
  3. Elasticsearch http://www.elasticsearch.org/guide/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值