使用Redis+java(模仿数据库)实现对象存取和读取
实现前要引入 Redis 架包
maven 项目
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
一、创建类:User
package com.wbg.mr.entity;public class User {
String uid;
String userName;
String passWord;
String name;</span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> User() { } </span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> User(String uid, String userName, String passWord, String name) { </span><span style="color: rgba(0, 0, 255, 1)">this</span>.uid =<span style="color: rgba(0, 0, 0, 1)"> uid; </span><span style="color: rgba(0, 0, 255, 1)">this</span>.userName =<span style="color: rgba(0, 0, 0, 1)"> userName; </span><span style="color: rgba(0, 0, 255, 1)">this</span>.passWord =<span style="color: rgba(0, 0, 0, 1)"> passWord; </span><span style="color: rgba(0, 0, 255, 1)">this</span>.name =<span style="color: rgba(0, 0, 0, 1)"> name; } @Override </span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> String toString() { </span><span style="color: rgba(0, 0, 255, 1)">return</span> "User{" + "id='" + uid + '\'' + ", userName='" + userName + '\'' + ", passWord='" + passWord + '\'' + ", name='" + name + '\'' + '}'<span style="color: rgba(0, 0, 0, 1)">; } </span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> String getUid() { </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> uid; } </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> setUid(String uid) { </span><span style="color: rgba(0, 0, 255, 1)">this</span>.uid =<span style="color: rgba(0, 0, 0, 1)"> uid; } </span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> String getUserName() { </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> userName; } </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> setUserName(String userName) { </span><span style="color: rgba(0, 0, 255, 1)">this</span>.userName =<span style="color: rgba(0, 0, 0, 1)"> userName; } </span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> String getPassWrod() { </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> passWord; } </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> setPassWrod(String passWord) { </span><span style="color: rgba(0, 0, 255, 1)">this</span>.passWord =<span style="color: rgba(0, 0, 0, 1)"> passWord; } </span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> String getName() { </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> name; } </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> setName(String name) { </span><span style="color: rgba(0, 0, 255, 1)">this</span>.name =<span style="color: rgba(0, 0, 0, 1)"> name; }
}
二、创建 UserDao 类
package com.wbg.mr.dao;import com.wbg.mr.entity.User;
import redis.clients.jedis.Jedis;import java.util.*;
public class UserDao {
private static Jedis jedis;</span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> UserDao(Jedis jedis) { </span><span style="color: rgba(0, 0, 255, 1)">this</span>.jedis =<span style="color: rgba(0, 0, 0, 1)"> jedis; } </span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)"> * 添加 </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> addUser(User user) { </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">首先保存user-id</span> jedis.sadd("useradd", "user-" +<span style="color: rgba(0, 0, 0, 1)"> user.getUid()); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">-----添加数据----------</span> Map<String, String> map = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap<String, String><span style="color: rgba(0, 0, 0, 1)">(); map.put(</span>"uid"<span style="color: rgba(0, 0, 0, 1)">, user.getUid()); map.put(</span>"userName"<span style="color: rgba(0, 0, 0, 1)">, user.getUserName()); map.put(</span>"passWord"<span style="color: rgba(0, 0, 0, 1)">, user.getPassWrod()); map.put(</span>"name"<span style="color: rgba(0, 0, 0, 1)">, user.getName()); jedis.hmset(</span>"user-" +<span style="color: rgba(0, 0, 0, 1)"> user.getUid(), map); } </span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)"> * 获取单个User * * </span><span style="color: rgba(128, 128, 128, 1)">@return</span> <span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">public</span> List<String><span style="color: rgba(0, 0, 0, 1)"> getById(String id) { </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (exists()) { </span><span style="color: rgba(0, 0, 255, 1)">return</span> jedis.hmget("user-" + id, "id", "userName", "passWord", "name"<span style="color: rgba(0, 0, 0, 1)">); } </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">; } </span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)"> * 获取全部 * * </span><span style="color: rgba(128, 128, 128, 1)">@return</span> <span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">public</span> List<User><span style="color: rgba(0, 0, 0, 1)"> listAll() { List</span><User> list = <span style="color: rgba(0, 0, 255, 1)">new</span> ArrayList<User><span style="color: rgba(0, 0, 0, 1)">(); User user </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">; </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (exists()) { </span><span style="color: rgba(0, 0, 255, 1)">for</span> (String useradd : jedis.smembers("useradd"<span style="color: rgba(0, 0, 0, 1)">)) { user </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> User(); List</span><String> lists = jedis.hmget(useradd, "id", "userName", "passWord", "name"<span style="color: rgba(0, 0, 0, 1)">); user.setUid(lists.get(</span>0<span style="color: rgba(0, 0, 0, 1)">)); user.setUserName(lists.get(</span>1<span style="color: rgba(0, 0, 0, 1)">)); user.setPassWrod(lists.get(</span>2<span style="color: rgba(0, 0, 0, 1)">)); user.setName(lists.get(</span>3<span style="color: rgba(0, 0, 0, 1)">)); list.add(user); } </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> list; } </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">; } </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除全部</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">boolean</span><span style="color: rgba(0, 0, 0, 1)"> delAll() { </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (exists()) { jedis.del(</span>"useradd"<span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">; } </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">; } </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">判断是否存在</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">boolean</span><span style="color: rgba(0, 0, 0, 1)"> exists() { </span><span style="color: rgba(0, 0, 255, 1)">return</span> jedis.exists("useradd"<span style="color: rgba(0, 0, 0, 1)">); }
}
三、测试
public class Main {
private static Jedis jedis =null;
public static void main(String[] args) {
// 连接本地的 Redis 服务
jedis = new Jedis("localhost");
System.out.println("连接成功");
// 查看服务是否运行
System.out.println("服务正在运行:"+jedis.ping());
user();}
public static void user(){UserDao user = new UserDao(jedis);
user.delAll();
user.addUser(new User("21","ldl","123456","刘地林"));
user.addUser(new User("31","oyl","123456","欧一乐"));
user.addUser(new User("41","tyj","123456","唐玉棋"));
user.addUser(new User("51","cs","123456","陈胜"));
user.addUser(new User("61","gsq","123456","郭世棋"));
for (User user1 : user.listAll()) {System.out.println(user1);
}
}