JavaWeb——Redis

  • 安装
1.安装redis编辑时所需要的一个类库
   yum install gcc-c++
   yum -y install gcc automake autoconf libtool make?
   yum -y install  tcl

2.对redis 进行编译
   在redis目录下输入make命令
3.对redis进行安装
   make install PREFIX=/usr/local/redis

4.在/usr/local 有一个redis目录,这就是安装好的redis
   进入到这个目录,再进入bin
   cd /usr/local/redis/bin
  
5.启动redis服务
   ./redis-server

6.用客户端来连接redis服务
   ./redis-cli

7.通出客户端 
  quit   exit

8.关闭redis服务
   ./redis-cli shutdown

一、数据类型

String类型 Map<String,String>

  1. set key value
    存入,重复key会被替换
  2. get key
    获取
  3. setrange key offset value
    从设定索引开始替换
  4. getrange key start end
    取出start到end,包含
  5. del key
    删除
  6. strlen key
    value的长度
  7. setex key time value
    设置key过期时间
  8. setnx key value
    实现分布式
  9. TTL
    查看过期时间
  10. append key value
    增加
  11. incr key / incrby key number
    自增
  12. decr key / decrby key number
    自减
  13. mset key value key value ……
    一次设置多个key

hash类型 Map<String,Map<String,String>>

设置,获取
hset key field1 value1
hget key field (每次只能取出一个值)

批量设置,获取
hmset key field1 value1 field1 value1 ……
hmget key field field……

hlen key
根据key返回该key下的键值对数

获取主key下的keys
hkeys key *

获取主key下所有的值
hvals key

查看field是否存在
hexists key field

删除filed
hdel filed filed ……

获取所有的键值
hgetall key

list类型 Map<String,List<T>> 有序,可重复

rpush key value value ……
向最后一个值之后存入

lpush key value value ……
向第一个值之前存入

lrange key start end
查数据

llen key
查看长度

lpop key
删除第一个值

rpop
删除最后一个值

lindex key index
获取单个元素

lrem key count value
从第一个开始删除count个value

set类型 Map<String,set<T>>无序不可重复

  1. sadd key value value ……
    添加
  2. smembers key
    遍历
  3. scard key
    统计值个数
  4. srem key value
    删除value
  5. spop key
    随机删
  6. smove key1 key2 value
    将key1的alue删除加入key2
  7. sdiff key1 key2
    skey1中和key2不同的部分
  8. sinter key1 key2
    交集
  9. sunion key1 key2
    并集

Zset Map<String,List<T>

  1. zadd key sorte valuesorte value ……
    存放数据
  2. zrange key  start end (withscores   显示排序的列)
    按下标取出数据     按排序规则升序排列
  3. zrevrange key start end (withscores   显示排序的列)
    按下标取出数据 按排序规则降序排列
  4. zrem key value   
    删除指定的值
  5. zrangebyscore key min  max    
    根据排序区间查询  
  6. zcount key min max    
    根据排序区间 查询数量
  7. zrank  key  value    
    查看这个value 对应的下标位置
  8. zcard key    
    统计该zset 中有多少值
  9. zscore key value   
    查看当前值的  排序

二、持久化

修改配置文件既可

在配置文件中 配置redis 写入磁盘的方法:
save 900 1 在900秒内 如果有一个key发生了改变 才存储到文件中
save 300 10 在300秒内 有10个key发生改变 才存储到文件中
save 60 10000 在60秒内 有10000个key发生改变 才存储到文件中

如果改动key以后 没有触发保存机制 电脑死机/故障 数据会丢失

Aof 方式: 将redis的每一步操作都记录在磁盘 效率大大削减
配置文件中修改: appendonly yes

三、使用API连接Redis

使用Object流来存入读取

POJO

package beer.onexone.redis;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable {
	private static final long serialVersionUID = 7875776078930441304L;
	private int id;
	private String name;
	private Date createDate;
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public User(int id, String name, Date createDate) {
		super();
		this.id = id;
		this.name = name;
		this.createDate = createDate;
	}
	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 Date getCreateDate() {
		return createDate;
	}
	public void setCreateDate(Date createDate) {
		this.createDate = createDate;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", createDate=" + createDate + "]";
	}
}

存入

package beer.onexone.redis;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Date;

import redis.clients.jedis.Jedis;

public class DoRedis {
	public static void main(String[] args) throws IOException {
		//创建连接
		Jedis jedis = new Jedis("127.0.0.1",6379);
		//创建User
		User user = new User(5, "星期一", new Date());
		//创建数组输出流
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
		//创建字节输出流
		ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
		//将对象写入流对象
		objectOutputStream.writeObject(user);
		//设置写入key
		byte[] key = "5".getBytes();
		//写入Redis
		jedis.set(key,byteArrayOutputStream.toByteArray());
		objectOutputStream.close();
		byteArrayOutputStream.close();
		jedis.close();
	}
}

获取

package beer.onexone.redis;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

import redis.clients.jedis.Jedis;

public class GetRedis {
	public static void main(String[] args) throws IOException, ClassNotFoundException {
		//创建连接
		Jedis jedis = new Jedis("127.0.0.1",6379);
		byte[] bs = jedis.get("5".getBytes());
		//创建数组输入流
		ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bs);
		//创建字节输入流
		ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
		//将流对写入象对象
		User user = (User) objectInputStream.readObject();
		System.out.println(user);
		objectInputStream.close();
		byteArrayInputStream.close();
		jedis.close();
	}
}

Json存入获取

package beer.onexone.redis;

import java.util.Date;

import com.google.gson.Gson;

import redis.clients.jedis.Jedis;

public class UseJson {
	public static void main(String[] args) {
		Jedis jedis = new Jedis("127.0.0.1", 6379);
		User user = new User(7, "星期五", new Date());
		String json = new Gson().toJson(user);
		jedis.set("7", json);
		jedis.close();
	}
}
package beer.onexone.redis;

import com.google.gson.Gson;

import redis.clients.jedis.Jedis;

public class GetJson {
			public static void main(String[] args) {
				 Jedis jedis = new Jedis("127.0.0.1",6379);
				String string =jedis.get("7");
				User user = new Gson().fromJson(string, User.class);
				System.out.println(user);
				jedis.close();
			}
}

jingsongchan

发表评论

电子邮件地址不会被公开。 必填项已用*标注