redis入门问题,求帮助

问题描述

问题描述:模仿微博关注-粉丝 redis初步入门http://blog.nosqlfan.com/html/2938.html?ref=rediszt参考那个PHP的例子,我这个是java的,没有达到预期效果。代码如下:UserService.java接口类package com.redis.test;import java.util.Set;public interface UserService {// 关注用户public void follow(String userId);// 取消关注public void unfollow(String userId);// 关注了哪些人public Set<String> following();// 被哪些人关注(粉丝)public Set<String> followedBy();}UserServiceImpl.java接口实现类package com.redis.test;import java.util.Set;import redis.clients.jedis.Jedis;public class UserServiceImpl implements UserService {private String userId;private Jedis redisService;public UserServiceImpl(String userId) {this.userId = userId;this.redisService = new Jedis("localhost");}@Overridepublic void follow(String userId) {// 添加关注的人this.redisService.sadd("graph:user:{$this.userId}:following", userId);// 被关注的人添加this.redisService.sadd("graph:user:$userId:followed_by", this.userId);}@Overridepublic Set<String> following() {// 获取所关注的对象集合return this.redisService.smembers("graph:user:{$this.userId}:following");}@Overridepublic Set<String> followedBy() {// 获取被哪些编号进行关注return this.redisService.smembers("graph:user:{$this.userId}:followed_by");}@Overridepublic void unfollow(String userId) {// 移除关注列表this.redisService.srem("graph:user:{$this.userId}:following", userId);// 移除被关注列表/粉丝列表this.redisService.srem("graph:user:$userId:followed_by", this.userId);}}客户端操作测试类package com.redis.test;import java.util.Iterator;public class UserClient {/** *@description *@param args */public static void main(String[] args) {UserService user1 = new UserServiceImpl("1");UserService user2 = new UserServiceImpl("2");UserService user3 = new UserServiceImpl("3");//user1关注的人有2 3user1.follow("2");user1.follow("3");Iterator<String> it1 = user1.following().iterator();System.out.println("user1 following:");while(it1.hasNext()){System.out.print(it1.next()+" "); //预计结果为2 3//实际为1 2 3}//user2关注1 3user2.follow("1");user2.follow("3");//user3关注1user3.follow("1");Iterator<String> it11 = user1.followedBy().iterator();System.out.println("nuser1 followed_by:");while(it11.hasNext()){System.out.print(it11.next()+" "); //预计结果为2 3//实际为 无}}}Windows系统、redis2.0.2版本、jedis客户端这是什么问题呢。

解决方案

public Set<String> followedBy() { // 获取被哪些编号进行关注 return this.redisService .smembers("graph:user:{$this.userId}:followed_by"); } "graph:user:{$this.userId}:followed_by"这个是key?$this.userId在php里面表示变量。在java里面"graph:user:{$this.userId}:followed_by"这整个就是字符串。所以获取不到对应key的set。

时间: 2024-09-16 12:46:59

redis入门问题,求帮助的相关文章

《Redis入门指南》一5.3 Python与Redis

5.3 Python与Redis Redis入门指南 Redis官方推荐的Python客户端是redis-py1. 5.3.1 安装 推荐使用pip install redis安装最新版本的redis-py,也可以使用easy_install:easy_install redis. 5.3.2 使用方法 首先需要引入redis-py: import redis 下面的代码将创建一个默认连接到地址127.0.0.1,端口6379的Redis连接: r = redis.StrictRedis() 也

代码分析-菜鸟入门,求大牛指点关于GetKeyDown与GetKeyUp的问题

问题描述 菜鸟入门,求大牛指点关于GetKeyDown与GetKeyUp的问题 想实现的效果:按住"up"键实现人物走动(动画循环),松开"up"键时人物动作停止. 脑残自己敲的代码大概如下 if(Input.GetKeyDown(""up"")) { gameObject.animation.PlayQueued(""walk""); if(Input.GetKeyUp("&

冒泡排序-java入门新人求代码:html中如何让一个提交按钮运行十个空格。

问题描述 java入门新人求代码:html中如何让一个提交按钮运行十个空格. 是这样,我做一个网页版的冒泡排序,对10个数字进行冒泡排序,每个数字占一个空格(表格), 然后设定一个提交按钮,点击这个按钮后可以对这十个空格的数字进行冒泡排序. 请不吝指教,谢谢. 要完整的代码,谢谢. 解决方案 可以这样写 ......复制十遍 用个form表单包着,这样就可以随机让别人输入10个数了,再加个ajax点击事件,这样点击它后台通过request.getparametervalues("shuzhi&q

java入门新人求代码:网页版冒泡排序,谢谢。

问题描述 java入门新人求代码:网页版冒泡排序,谢谢. 用myeclipse制作一个网页版的冒泡排序,10个数字(10个空,每个空可以填写1个数字),一个提交排序按钮,点击后对输入的十个空格的数字进行冒泡排序. 谢谢. 解决方案 http://ask.csdn.net/questions/239606 不是回答你了么?新建一个html文件,粘贴上面的代码,你遇到什么具体的问题? 解决方案二: 网上那么多.自己搜索的看看.

java简单问题,入门菜鸟求解答

问题描述 java简单问题,入门菜鸟求解答 刚试了一下java编码,然后报错2个,实在看不出来哪里错了,求大神,好心人解答一下 解决方案 正确的代码如下: import java.util.*; //输入输出文件所在的包 public class XX{ //类名需要和文件名一致 public static void main(String[] args){ //你的程序貌似多了一个args Scanner input = new Scanner(System.in); //用来定义输入 Sys

javascript-asp.net入门,求大神帮忙!控件的内容传输问题。

问题描述 asp.net入门,求大神帮忙!控件的内容传输问题. 操作步骤: 1 填写用户资料: 2 点击"保存"按钮,则系统保存该用户资料,并在下方"用户列表"中加入新增用户信息: 可以连续填写并新增用户,用户列表应实时刷新(总是显示当前已新增的全部用户). 3 点选用户列表,选择某一用户: 则"用户资料"一栏应更新为相应用户的资料: 4 点击"删除"按钮可删除"用户列表"当前选项用户:删除后,"

c语言-C语言入门问题求大神指点

问题描述 C语言入门问题求大神指点 #include #define TABINC 8 //tab increment size //replace strings of blanks with tabs and blanksint main(void){ int c nb nt pos; nb = 0; //number of blanksnt = 0; //number of tabsfor (pos = 1; (c = getchar()) != EOF; pos++){ if (c ==

《Redis入门指南》一4.3 排序

4.3 排序 Redis入门指南 午后,宋老师正在批改学生们提交的程序,再过几天就会迎来第一次计算机全市联考.他在每个学生的程序代码末尾都用注释详细地做了批注--严谨的治学态度让他备受学生们的爱戴. 一个电话打来."小白的?"宋老师拿出手机,"博客最近怎么样了?"未及小白开口,他就抢先问道. 特别好!现在平均每天都有50多人访问我的博客.不过昨天我收到一个访客的邮件,他向我反映了一个问题:查看一个标签下的文章列表时文章不是按照时间顺序排列的,找起来很麻烦.我看了一下

mysql-Java入门新人求解答:如何能保存修改后的网页?求代码

问题描述 Java入门新人求解答:如何能保存修改后的网页?求代码 <%@ page import ="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + ":

《Redis入门指南》一5.1 PHP与Redis

5.1 PHP与Redis Redis入门指南 Redis官方推荐的PHP客户端是Predis1和phpredis2.前者是完全使用PHP代码实现的原生客户端,而后者则是使用C语言编写的PHP扩展.在功能上两者区别并不大,就性能而言后者会更胜一筹.考虑到很多主机并未提供安装PHP扩展的权限,本节会以Predis为示例介绍如何在PHP中使用Redis. 虽然Predis的性能逊于phpredis,但是除非执行大量Redis命令,否则很难区分二者的性能.而且实际应用中执行Redis命令的开销更多在网