string
博客不好的实现
1 2 3 4 5
| jedis.set("key1", "value1"); jedis.get("key1"); jedis.del("lock_test"); jedis.incr("blog_id_counter"); Long key = jedis.incrBy("key", 1);
|
1
| jedis.set("lock_test", "value_test", SetParams.setParams().nx());
|
1 2 3 4 5 6 7 8
| Long publishBlogResult = jedis.msetnx("article:1:title", "学习Redis", "article:1:content", "如何学好redis的使用", "article:1:author", "deltaqin", "article:1:time", "2020-01-01 00:00:00"); List<String> blog = jedis.mget("article:1:title", "article:1:content", "article:1:author", "article:1:time"); String updateBlogResult = jedis.mset("article:1:title", "修改后的学习redis", "article:1:content", "修改后的如何学好redis的使用");
|
1 2 3
| jedis.strlen("article:1:content"); jedis.getrange("article:1:content", 0, 5); jedis.append("operation_log_2020_01_01", "今天的第" + (i + 1) + "条操作日志\n");
|
hash
hash就是一个hashmap,还自带变量名
1 2 3
| jedis.hset("short_url_access_count", shortUrl, "0"); jedis.hset("url_mapping", shortUrl, url); jedis.hget("short_url_access_count", shortUrl);
|
博客好
一篇文章的所有属性在一个hash里面,key是一篇文章,field是不同属性,val是不同值
1 2 3 4 5
| jedis.hexists("article::" + id, "title"); jedis.hmset("article::" + id, blog); # blog 是 hashmap Map<String, String> blog = jedis.hgetAll("article::" + id); jedis.hincrBy("article::" + id, "like_count", 1);
|
session
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.add(Calendar.HOUR, 24); Date expireTime = calendar.getTime();
jedis.hset("sessions", "session::" + token, String.valueOf(userId)); jedis.hset("sessions::expire_time", "session::" + token, dateFormat.format(expireTime));
jedis.hget("sessions", "session::" + token);
jedis.hget("sessions::expire_time", "session::" + token); SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); Date expireTimeDate = dateFormat.parse(expireTime);
Date now = new Date();
if(now.after(expireTimeDate)) { return false; }
|
list
博客分页
1 2 3 4 5 6 7 8
| jedis.hmset("article::" + id, blog); jedis.lpush("blog_list", String.valueOf(id));
int startIndex = (pageNo - 1) * pageSize; int endIndex = pageNo * pageSize - 1; return jedis.lrange("blog_list", startIndex, endIndex);
|
队列FIFO
1 2
| jedis.lpush("sec_kill_request_queue", secKillRequest); jedis.rpop("sec_kill_request_queue");
|
阻塞式获取发送邮件任务
1 2
| jedis.brpop(5, "send_mail_task_queue");
|
待办
1 2 3 4 5 6 7 8 9 10
|
linsert(String key, ListPosition where, String pivot, String value); jedis.linsert("todo_event::" + userId, ListPosition.BEFORE , targetTodoEvent, "插入的待办事项");
jedis.lset("todo_event::" + userId, index, updatedTodoEvent);
jedis.lrem("todo_event::" + userId, 0, todoEvent);
|
set
博客标签
1 2
| jedis.sadd("article::" + id + "::tags", tags); Set<String> tags = jedis.smembers("article::" + id + "::tags");
|
抽奖
1 2 3 4
| jedis.sadd("lottery_draw_event::" + lotteryDrawEventId +"::candidates", String.valueOf(userId)); jedis.srandmember("lottery_draw_event::" + lotteryDrawEventId +"::candidates", count);
|
微博案例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| jedis.sadd("user::" + followUserId + "::followers", String.valueOf(userId)); jedis.sadd("user::" + userId + "::follow_users", String.valueOf(followUserId));
jedis.srem("user::" + followUserId + "::followers", String.valueOf(userId)); jedis.srem("user::" + userId + "::follow_users", String.valueOf(followUserId));
jedis.smembers("user::" + userId + "::followers"); jedis.smembers("user::" + userId + "::follow_users");
jedis.scard("user::" + userId + "::followers"); jedis.scard("user::" + userId + "::follow_users");
jedis.sinter("user::" + userId + "::follow_users", "user::" + otherUserId + "::follow_users");
jedis.sdiff("user::" + otherUserId + "::follow_users", "user::" + userId + "::follow_users");
|
朋友圈点赞
1 2 3 4 5 6 7 8 9 10 11 12
| jedis.sadd("moment_like_users::" + momentId, String.valueOf(userId)); jedis.srem("moment_like_users::" + momentId, String.valueOf(userId));
jedis.sismember("moment_like_users::" + momentId, String.valueOf(userId));
jedis.smembers("moment_like_users::" + momentId);
jedis.scard("moment_like_users::" + momentId);
|
商品搜索案例
1 2 3 4 5 6 7 8
|
jedis.sadd("keyword::" + keyword + "::products", String.valueOf(productId));
keywordSetKeys.add("keyword::" + keyword + "::products"); String[] keywordArray = keywordSetKeys.toArray(new String[keywordSetKeys.size()]); jedis.sinter(keywordArray);
|
网站UV统计
1 2
| jedis.sadd("user_access::" + today, String.valueOf(userId)); jedis.scard("user_access::" + today);
|
投票统计
1 2 3 4 5 6 7 8
| jedis.sadd("vote_item_users::" + voteItemId, String.valueOf(userId));
jedis.sismember("vote_item_users::" + voteItemId, String.valueOf(userId));
jedis.smembers("vote_item_users::" + voteItemId);
jedis.scard("vote_item_users::" + voteItemId);
|
zset
推荐商品
1 2 3 4 5 6 7 8
| jedis.zincrby("continue_purchase_products::" + productId, 1, String.valueOf(otherProductId));
Set<Tuple> jedis.zrevrangeWithScores("continue_purchase_products::" + productId, 0, 2);
|
新闻
1 2
| jedis.zadd("news", timestamp, String.valueOf(newsId)); jedis.zrevrangeByScoreWithScores("news", maxTimestamp, minTimestamp, index, count);
|
排行榜
1 2 3 4 5 6 7 8
| jedis.zadd("music_ranking_list", 0, String.valueOf(songId)); jedis.zincrby("music_ranking_list", score, String.valueOf(songId));
jedis.zrevrank("music_ranking_list", String.valueOf(songId));
jedis.zrevrangeWithScores("music_ranking_list", 0, 2);
|
自动补全
将字符的每一个追加之后作为key,value就是整句话,分数是当前日期
使用的时候直接获取对应的key即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| public void add(String keyword) { char[] keywordCharArray = keyword.toCharArray();
StringBuffer potentialKeyword = new StringBuffer("");
for(char keywordChar : keywordCharArray) { potentialKeyword.append(keywordChar);
jedis.zincrby( "potential_Keyword::" + potentialKeyword.toString() + "::keywords", new Date().getTime(), keyword); } }
public Set<String> getAutoCompleteList(String potentialKeyword) { return jedis.zrevrange("potential_Keyword::" + potentialKeyword + "::keywords", 0, 2); }
|