天成1 发表于 2018-11-6 12:16:42

redis 应用场景及使用案例

  首先,你要对Redis有非常详尽的了解,包括常用命令,基本的数据结构String, Hash,List,Set等。
  其次,要结合及项目的业务场景选择最合适的数据结构。
  最后,几点建议,对于key的管理,最好在程序中使用全局配置来实现,直接在代码里写前缀的做法要严格避免,这样可维护性实在太差;设计好你的Sharding机制;注意数据的持久化;
  主要是用来将原有的业务数据分离出来,做热点数据(排名、统计、最近信息)的展示以及需要实时更新或排序的数据;
  1. 因此我们的用户数据是存mysql的,同时有部分用户实时数据同时也存在redis;
  2. 我们的系统里md5+salt里的salt是每个用户单独生成的,因此相同密码也不会有相同的md5结果
  3.数据落地的时候, 先根据mysql的结构入一份 mysql 一份序列化到 redis 。create的时候, 先去redis找,如果找不到。直接去 mysql读。
  数据库设计
  http://blog.codingnow.com/2011/11/dev_note_2.html

[*]  account::version number
[*]  account::email string
[*]  account::password string // md5(password..salt)
[*]  account::nickname string
[*]  account::lastlogin hashes

[*]  ip string
[*]  time string

[*]  account::history list(string)
[*]  account::available enum(open/locked/delete)
  127.0.0.1:6379> set account:001:version 1
  OK
  127.0.0.1:6379> set account:001:email "xx@admin.com"
  OK
  127.0.0.1:6379> set account:001:nickname "小明"
  OK
  127.0.0.1:6379> hmset account:001 ip "10.101.1.212" time "0081222"
  OK
  127.0.0.1:6379> lpush account:001:history   "3333""4444"
  (integer) 2
  127.0.0.1:6379> setaccount:count 0
  OK
  127.0.0.1:6379> incrbyaccount:count 1
  (integer) 1

页: [1]
查看完整版本: redis 应用场景及使用案例