之前使用本地缓存,但是本地缓存无法搭建分布式服务器,打算用redis代替本地缓存,本地缓存的好处是存什么数据结构,取出来就是什么结构,比如游戏中最常见的道具或者装备,都是一个列表,在缓存里就是一个List<>类型。
但是用redis后,我一直在纠结用string还是用hash,string就是把整个道具列表换成json字符串存进去,用hash就是一条数据=一个道具数据的json字符串。
用string的话,取出来就是一个整体,对他添加删除或对其中一条修改,然后再整体存进去,这样底层代码会简单一点,但是这样每次都要整个取出来,整个存进去,第一是数据流量大,会不会有性能问题,第二是每次要整个转json字符串或转对象,会不会有性能问题。
用hash的话,对单条数据操作时性能会比较好,但是底层代码会比较复杂,还有需要整个数据时就要对每一条进行转json字符串或转对象。
两个各有优缺点,所以很久纠结,选择了一种方式等到项目上线之后要改的话就太麻烦了,另外说一下我用的数据库是mongodb
string确实有性能问题,看你的数据量了,数据量大的话,还是用hash存,就是写的时候麻烦一点,避免以后频繁改动