安装redis 并把java对象存放在redis中

redis windows 下载地址:https://github.com/ServiceStack/redis-windows

一、下载的安装包解压到盘符的指定位置,如下结构:(纯手敲,如果有缺失,见谅)

Redis.doc

redis-benchmark.exe

redis-check-aop.exe

redis-check-dump.exe

redis-cli.exe

RedisQFork_8524.dat

redis-server.exe

RedisService.doc

我的安装路径:D:\install_tool\redis\redis64-2.8.9

二、使用windows dos窗口

打开到安装路径,执行此命令:redis-server redis.windows.conf

如果出现一个图形界面,

_._
           _.-``__ ‘‘-._
      _.-``    `.  `_.  ‘‘-._           Redis 2.8.9 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ‘‘-._
 (    ‘      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|‘` _.-‘|     Port: 6379
 |    `-._   `._    /     _.-‘    |     PID: 8524
  `-._    `-._  `-./  _.-‘    _.-‘
 |`-._`-._    `-.__.-‘    _.-‘_.-‘|
 |    `-._`-._        _.-‘_.-‘    |           http://redis.io
  `-._    `-._`-.__.-‘_.-‘    _.-‘
 |`-._`-._    `-.__.-‘    _.-‘_.-‘|
 |    `-._`-._        _.-‘_.-‘    |
  `-._    `-._`-.__.-‘_.-‘    _.-‘
      `-._    `-.__.-‘    _.-‘
          `-._        _.-‘
              `-.__.-‘

[8524] 07 Aug 14:41:49.229 # Server started, Redis version 2.8.9
[8524] 07 Aug 14:41:49.230 * The server is now ready to accept connections on po
rt 6379

则表示启动redis服务成功。双击,redis-cli.exe客户端,测试,输入,set age 21 回车,下一行,get age回车,如果输出21,就说明你安装redis成功。

二、redis存放JAVA对象

1、每次想操作redis的时候,一定要记得开启redis服务,否则,会报连接错误。

2、想操作JAVA对象存放在redis中,一定要加入jar,pom如下:
        <dependency>
             <groupId>redis.clients</groupId>
             <artifactId>jedis</artifactId>
             <version>2.7.3</version>
             <name>Jedis</name>
        </dependency>

首先初始化本地的redis服务,Jedis jedis = new Jedis("127.0.0.1",6379),用jedis对象的set(参数1,参数2)方法,把java对象存放进去。由于,set方法的函数,是两个字节,第一个参数是存放在redis中的Key(字节),第二个参数Value(字节对象)

1)创建对象 2)把对象转换成字节 3)放入到redis中

package com.liyi.test.util;

import java.io.Serializable;

public class Person implements Serializable{
    private int id ;
    private String name;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
     public Person() {
        // TODO Auto-generated constructor stub
    }
    public Person(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
}
package com.liyi.test.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class SerializeUtil {

    public static byte[] serialize(Object object) {
    
        ObjectOutputStream oos = null;
        
        ByteArrayOutputStream baos = null;
        
        try {
        
            //序列化
            
            baos = new ByteArrayOutputStream();
            
            oos = new ObjectOutputStream(baos);
            
            oos.writeObject(object);
            
            byte[] bytes = baos.toByteArray();
            
            return bytes;
            
            } catch (Exception e) {
            
             
    
            }

            return null;

        }

 

    public static Object unserialize(byte[] bytes) {
    
        ByteArrayInputStream bais = null;
        
        try {
        
        //反序列化
        
        bais = new ByteArrayInputStream(bytes);
        
        ObjectInputStream ois = new ObjectInputStream(bais);
        
        return ois.readObject();
        
        } catch (Exception e) {
        
         
        
        }
        
        return null;
        
        }
    
    }
package com.liyi.test.util;

import redis.clients.jedis.Jedis;

public class Test {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("127.0.0.1",6379);
        Person p1 = new Person(1,"testredis1");
        Person p2 = new Person(2,"testredis2");
        Person p3 = new Person(3,"testredis2");
        Person p4 = new Person(4,"testredis2");
        jedis.set("person:1".getBytes(), SerializeUtil.serialize(p1));
        jedis.set("person:2".getBytes(), SerializeUtil.serialize(p2));
        jedis.set("person:3".getBytes(), SerializeUtil.serialize(p3));
        jedis.set("person:4".getBytes(), SerializeUtil.serialize(p4));
    }
}

运行main方法,打开redis客户端,输入,get person:1,有以下输出,说明保存成功

127.0.0.1:6379> get person:1
"\xac\xed\x00\x05sr\x00\x19com.liyi.test.util.PersonDB\x82\xab\xa7\x8c\xbbz\x02\
x00\x02I\x00\x02idL\x00\x04namet\x00\x12Ljava/lang/String;xp\x00\x00\x00\x01t\x0
0\ntestredis1"
127.0.0.1:6379>

时间: 2024-08-02 02:40:27

安装redis 并把java对象存放在redis中的相关文章

Android开发系列(七):把文件存放在SDCard中

一般我们的手机应用默认的存储空间是手机自带的内存中,但是对于比较大的文件比如视频.音频来说,我们可以把它存放在SDCard中: 接下来通过代码实现具体的把文件存放在SDCard中(仅实现了核心代码) 首先,因为要存放在SDCard中,我们需要提供SDCard权限: 在AndroidManifest.xml中添加权限: <!-- 在SDCard创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT

python中对象初始化放在内存中什么位置

截屏自<Python源码剖析>正文第一页. 也即: 当在其他class中使用 时,node是在堆中的.相当于在C中调用malloc. 不仅仅是对于像Node这样的class 的对象是存在于堆中的,在Python中就连int类型的数值同样是存在在堆中的.因为在Python中就连基本数据类型同样是对象. 让我们思考下Node中的value和self.value这两个变量: 为什么在Node中其他的方法能够调用self.value而不能够调用value? 以前我使用C/C++的思维方法来理解这个问题

java对象在堆内存中的分配原则

1.对象优先分配在Eden区,如果Eden区没有足够的空间时,虚拟机执行一次Minor GC. 2.大对象直接进入老年代(大对象是指需要大量连续内存空间的对象).这样做的目的是避免在Eden区和两个 Survivor区之间发生大量的内存拷贝(新生代采用复制算法收集内存). 3.长期存活的对象进入老年代.虚拟机为每个对象定义了一个年龄计数器,如果对象经过了1次Minor GC那么对象会进入Survivor区,之后每经过一次Minor GC那么对象的年龄加1,知道达到阀值对象进入老年区. 4.动态判

函数返回值存放在 EAX 中

int strcmpA(char *s1, char *s2){   __asm        {            xor al, al            mov ecx, -1            repnz scasb            not ecx            mov edi, s1            mov esi, s2            repe cmpsb            mov eax, ecx   //eax中存放的值用作函数的返回值 

详解xml文件描述,读取方法以及将对象存放到xml文档中,并按照指定的特征寻找的方案

主要的几个功能: 1.完成多条Emp信息的XML描述2.读取XML文档解析Emp信息3.将Emp(存放在List中)对象转换为XML文档4.在XML文档中查找指定特征的Emp信息 dom4j,jaxen 官网下载页面: http://sourceforge.net/projects/dom4j/files/dom4j-2.0.0-ALPHA-2/ 也可以在网盘上面下载:http://yunpan.cn/cwaNde7UYN83d  提取码 e247 1 完成多条Emp信息的XML描述 1.1 问

Java对象与引用

总结: 1. 基本数据类型的赋值不是引用,系统会自动创建两个独立的对象(内存空间) 2. 引用的赋值会覆盖两者在内存中的地址(即将两个对象合二为一),而基本数据类型的赋值不会 3. 引用存放在stack, 对象存放在heap.对象是引用的实体,我们日常看到的都是引用 对象引用 我们沿用之前定义的Human类,并有一个Test类: public class Test { public static void main(String[] args) { Human aPerson = new Hum

java对象的访问定位方式

java对象在访问的时候,我们需要通过java虚拟机栈的reference类型的数据去操作具体的对象.由于reference类型在java虚拟机规范中只规定了一个对象的引用,并没有定义这个这个引用应该通过那种方式去定位.访问java堆中的具体对象实例,所以一般的访问方式也是取决与java虚拟机的类型.目前主流的访问方式有通过句柄和直接指针两种方式. 1.句柄访问 使用句柄访问方式,java堆将会划分出来一部分内存去来作为句柄池,reference中存储的就是对象的句柄地址.而句柄中则包含对象实例

Java对象和它的内存管理

java中的内存管理分为两个方面: 内存分配:指创建java对象时JVM为该对象在堆空间中所分配的内存空间. 内存回收:指java 对象失去引用,变成垃圾时,JVM的垃圾回收机制自动清理该对象,并回收该对象所占用的内存. 虽然JVM 内置了垃圾回收机制,但仍可能导致内存泄露.资源泄露等,所以我们不能肆无忌惮的创建对象.此外,垃圾回收机制是由一个后台线程完成,也是很消耗性能的. 1.实例变量和类变量 java程序中的变量,大体可以分为 成员变量 和 局部变量 .其中局部变量可分为如下三类: 形参

java 对象序列化 RMI

对于一个存在于Java虚拟机中的对象来说,其内部的状态只保持在内存中.JVM停止之后,这些状态就丢失了.在很多情况下,对象的内部状态是需要被持久化下来的.提到持久化,最直接的做法是保存到文件系统或是数据库之中.这种做法一般涉及到自定义存储格式以及繁琐的数据转换.对象关系映射(Object-relational mapping)是一种典型的用关系数据库来持久化对象的方式,也存在很多直接存储对象的对象数据库.对象序列化机制(object serialization)是Java语言内建的一种对象持久化