Redis应用---Redis实现点赞点踩功能
为什么使用Redis而不是MySQL实现?
Redis 和 MySQL应用场景不同。
-
从效率来说:
Redis的数据存放在内存,所以速度快但是会受到内存空间限制。
MySQL存放在硬盘,在速度上肯定没有Redis快,但是存放的数据量要多的多。
-
从功能来说:
Redis是一个K-V数据库,同时还支持List/Hash/Set/Sorted Set等几个简单数据结构,所以只能以这些数据结构为基础实现功能。
Redis几种数据结构的适用场景
实现思路
使用Redis的Set数据结构存储数据。
Like和dislike对应不同的key,格式是:LIKE/DISLIKE:entityType:entityID;例如like的一个key:like:1:1234(1代表news业务,1234代表的是指定的newsId);可以通过RedisKeyUtil类中方法获取相应的key值;
public class RedisKeyUtil { private static String SPLIT = ":"; private static String BIZ_LIKE = "LIKE"; private static String BIZ_DISLIKE = "DISLIKE"; /** * 返回Like的redis key * key:业务+参数 * @param entityId * @param entityType * @return */ public static String getLikeKey(int entityId, int entityType) { return BIZ_LIKE + SPLIT + String.valueOf(entityType) + SPLIT + String.valueOf(entityId); } public static String getDisLikeKey(int entityId, int entityType) { return BIZ_DISLIKE + SPLIT + String.valueOf(entityType) + SPLIT + String.valueOf(entityId); } }
具体实现demo,参考: