2
Sunyanzi 2013-02-27 11:47:12 +08:00 1
我不太明白 LZ 的意思 ...
在我看来这不过就是一个触发器而已 ... 任何主动操作的步骤是从 session 获取用户 id 根据 id 执行修改 credit ... 被动操作的话 ... 比如被感谢 ... 根据帖子找到发帖人 id 根据 id 执行修改 credit ... 帖子被回复同理 ... 根据回帖找到楼主 id 根据 id 执行修改 credit ... 这种一目了然的问题你有什么不明白的 ..? |
4
qiayue OP @Sunyanzi 被动操作的,更新到数据库,我知道。
我的疑问是session里的余额如何同步更新? 举个栗子,我现在被感谢了,数据库里我的铜币增加了10,假如页面上的余额每次页面刷新都从数据库里边取,那没有任何问题。 我是想能不能减少查询次数,把余额存在session里,这样我多次刷新页面,就不需要去多次查询数据库了。 |
5
iloveyou 2013-02-27 12:23:48 +08:00 1
session放余额干嘛 又不是购物车
|
6
sohoer 2013-02-27 12:28:00 +08:00 1
可以用一个余额缓存,而不是存入session,
|
7
iloveyou 2013-02-27 12:28:30 +08:00 1
用memcache redis
|
8
qiayue OP |
10
rqrq 2013-02-27 13:10:52 +08:00 1
每次都读数据库也不会怎样,性能损耗相当小,数据库没有想象中那么脆弱。
当然也可以把用户信息存到memcache或者nosql数据库,用userid对应。 为什么要用session啊?下面的问题解决起来都得不偿失: 发帖/回帖提交的时候session已过期; 想要立即禁止某个在线用户的账号; |
11
Cadina 2013-02-27 13:22:02 +08:00 1
放session里是否有利取决于你的session存储的设计。
不管是否缓存在session里,余额信息是必须用数据库做持久化的,session只是一个缓存。 |
12
qiayue OP 感谢以上各位,我知道了,不纠结了,每次直接取是最方便的。
|
13
sohoer 2013-02-27 13:36:44 +08:00
你用什么开发,java使用一个静态变量做数据缓存很简单的
|
14
mkeith 2013-02-27 13:40:53 +08:00
其实楼主纠结的是 缓存的更新问题
|
15
sohoer 2013-02-27 13:45:41 +08:00
比如用一个全局的静态MAP<userid, money>,不管是主动还是被动修改都去更新MAP的值(如果存在)。
查看余额的时候从MAP中读,如果存在返回,不存在从数据库读。 |
16
chuangbo 2013-02-27 15:00:14 +08:00
function 更新余额()
....更新数据库 ....将当前值写入缓存 function 读取余额() ....如果有缓存: .......返回缓存 ....如果没有缓存: .......读取数据库,并写入缓存 .......返回缓存 |
17
treo 2013-02-27 15:39:58 +08:00
查看帖子列表和查看帖子的sql查询耗时比查询余额的耗时多得多吧
|