Windows10安装使用redis
一、下载redis
地址:https://github.com/microsoftarchive/redis/releases
二、解压安装
打开redis.windows-service.conf文件修改密码
打开命令行窗口,安装和注册redis(安装命令和启动命令均需要在redis的根目录下执行)
安装命令
redis-server.exe --service-install redis.windows.conf --loglevel verbose
启动命令
redis-server.exe --service-start
关闭命令
redis-server.exe --service-stop
启动后可在服务中查看是否启动成功
(右击我的电脑----管理----服务和应用程序----服务----)
三、命令行使用redis
新建一个命令行窗口执行下述命令
redis-cli.exe -h 127.0.0.1 -p 6379
四、使用Jedis操作redis
新建Jedis对象连接redis
public static void main(String[] args) {
//连接本地redis,端口默认6379
Jedis jedis = new Jedis("127.0.0.1");
//获得本地redis端口号
System.out.println(jedis.getClient().getPort());
//测试
System.out.println(jedis.ping());
}
操作String类型
//操作String
public static void operaString(Jedis jedis){
//添加一条数据
jedis.set("username","LiMing");
jedis.set("age","18");
//添加多条数据
//参数奇数为key,偶数为value
jedis.mset("hobby","football","sex","man");
//获取一条数据
System.out.println(jedis.get("username"));
//获取多条数据
List<String> mget = jedis.mget("username", "age", "sex");
for (String s : mget) {
System.out.print(s+",");
}
//删除
//jedis.del("username");
}
操作List类型
//操作list类型
public static void operalist(Jedis jedis){
//从左侧添加
jedis.lpush("number","one","two","three","four","five");
//从右侧添加
jedis.rpush("number","six","seven","eight");
//获取下标范围内的值
List<String> number = jedis.lrange("number", 1, 3);
for (String s : number) {
System.out.println(s);
}
//获取总条数
Long llen = jedis.llen("number");
System.out.println("总数:" + llen);
// 删除单条 删除列表中第一次出现的 two
// jedis.lrem("number", 1, "two");
// 删除多条
// jedis.del("number");
}
操作Hash类型
//操作hash类型
public static void operahash(Jedis jedis){
/**
* 添加一条数据
* 参数一:redis的key值
* 参数二:hash的key值
* 参数三:hash的value值
*/
jedis.hset("exphash","username","ZhangSan");
//添加多条数据
Map<String,String> map = new HashMap();
map.put("age","20");
map.put("sex","man");
map.put("hobby","swimming");
jedis.hmset("exphash",map);
//获取一条数据
String name = jedis.hget("exphash","username");
System.out.println(name);
//获取多条数据
List<String> list = jedis.hmget("exphash", "age", "sex", "hobby");
for (String s : list) {
System.out.println(s);
}
//获取hash中的所有数据
Map<String, String> exphash = jedis.hgetAll("exphash");
for (Map.Entry<String, String> entry : exphash.entrySet()) {
System.out.println("key:"+entry.getKey()+"value:"+entry.getValue());
}
//删除
//jedis.hdel("exphash","username");
}
操作Set类型
//操作set类型
public static void operaset(Jedis jedis){
//存值
jedis.sadd("expset","aaa","bbb","ccc","ddd","eee");
//取出所有值
Set<String> expset = jedis.smembers("expset");
for (String s : expset) {
System.out.print(s + ",");
}
// 删除
//jedis.srem("letters", "aaa", "bbb");
}
操作SortSet类型
//操作sortset类型
public static void operasortset(Jedis jedis){
Map<String,Double> expsortset = new HashMap();
expsortset.put("set1",1D);
expsortset.put("set2",2D);
expsortset.put("set3",3D);
expsortset.put("set4",4D);
expsortset.put("set5",5D);
//添加数据
jedis.zadd("expsortset",expsortset);
// 获取数据
Set<String> scores = jedis.zrange("expsortset", 1, 3);
for (String score: scores) {
System.out.print(score+",");
}
// 获取总条数
Long total = jedis.zcard("expsortset");
System.out.println("总数:" + total);
// 删除
//jedis.zrem("expsortset", "set1", "set3");
}
库操作
//库操作
public static void testAll(Jedis jedis){
//获得当前库的key数量
System.out.println(jedis.dbSize());
//获得所有key的名称
Set<String> keys = jedis.keys("*");
for (String key : keys) {
System.out.println(key);
}
}
事务
//事务
public static void operamult(Jedis jedis){
Transaction tx = jedis.multi();
// 开启事务
tx.set("mult", "11111");
// 提交事务
tx.exec();
// 回滚事务
tx.discard();
}
序列化对象存储
对象类
class User implements Serializable{
private static final long serialVersionUID = -5953057745560963565L;
private String username;
private Integer age;
private String sex;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
序列化工具类
//序列化工具类
class serialUtils{
//序列化
public static byte[] serialize(Object object) {
//对象操作流
ObjectOutputStream oos = null;
//字节数组输出流对象
ByteArrayOutputStream BOutput = null;
try {
BOutput = new ByteArrayOutputStream();
oos = new ObjectOutputStream(BOutput);
//将对象写入操作流
oos.writeObject(object);
//将操作流转换为字节数组
byte[] bytes = BOutput.toByteArray();
return bytes;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//反序列化
public static Object unserialize(byte[] bytes) {
if(bytes == null){
return null;
}
ByteArrayInputStream BInput = null;
try {
BInput = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(BInput);
return ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
测试
public static void main(String[] args) {
//连接redis
Jedis jedis = new Jedis("127.0.0.1");
//构建对象
User user = new User();
user.setKeyid("user1");
user.setUsername("ZhangSan");
user.setAge(15);
user.setSex("man");
//序列化信息
byte[] key = serialUtils.serialize(user.getKeyid());
byte[] value = serialUtils.serialize(user);
//存储
jedis.set(key,value);
//取出
byte[] bytes = jedis.get(key);
//反序列化
User resultuser = (User) serialUtils.unserialize(bytes);
System.out.println(resultuser);
}、