下载安装
windows版本的需要去github下载
github地址:
解压可以直接使用
- redis.windows.conf :配置文件
- redis-cli.exe :redis的客户端
- redis-server.exe :redis服务器
命令操作
1.redis的数据结构
redis存储的是:key value键值对 key是字符串 value有五种不同数据类型
-
字符串类型:string
-
哈希类型 hash: map格式
-
列表类型 list:相当于java的linklist格式
-
集合类型 set: 相当于java的hashset
-
有序集合类型 :sortedset 存进去自动排序
2.基本命令(详细的命令在redis中文网教程)
-
string
- 存储 : set key value
- 获取 :get key
- 删除 : del key
-
hash
- 存储: hset key filed value
- exp:hset myhash username lisi
- 获取 :hget key field
- exp: hget myhash username
- exp:hgetall myhash (获取所有)
- 删除 : hdel key field [field …]
- exp:hdel myhash username
- 存储: hset key filed value
-
lis–可以选择从列表的头部或者是尾部添加数据
- 存储:lpush key value [value …] / rpush key value [value …]
- 获取:
- 范围获取: lrange start end
- 删除
- lpop key : 删除列表最左边的元素
- rpop key : 删除列表最右边的函数
-
set (不保证存进去的顺序)
- 存储 : sadd key member [member …]
- 获取集合所有元素: smembers key
- 删除 : srem key member [member …]
-
sortedset
-
存储: zadd key [NX|XX] [CH] [INCR] score member [score member …]
- exp: zadd mysort 60 zhangsan 999 wangwu 147 lisi
-
获取 : zrange key start end
-
exp:zrange mysort 0 -1(全部获取)
得到的结果是
1) "zhangsan" 2) "lisi" 3) "wangwu"
-
-
zrem key value
-
exp: zrem mysort lisi
再次查询得到
(integer) 1 1) "zhangsan" 2) "wangwu"
-
-
-
keys pattern 查询某个键
pattern可以是正则表达式
exp:
127.0.0.1:6379> keys djklasjdlasdj (empty list or set) 127.0.0.1:6379> keys * 1) "mysort" 2) "username" 3) "a" 4) "mylist" 5) "myset"
持久化
redis是内存数据库 当服务器重启 数据会丢失 可以将redis的数据持久化到硬盘文件中
持久化机制:
-
RDB:
默认方式 不需要进行配置 默认就使用这种机制 在一定的时间间隔内 检测key的变化情况 然后持久化数据到一个后缀名为rdb的文件中
使用步骤如下
-
编辑redis.windows,conf文件
文件中有一段配置如下
save 900 1 save 300 10 save 60 10000
解释如下 在如下的三种情况下都会持久化一次
after 900 sec (15 min) if at least 1 key changed
after 300 sec (5 min) if at least 10 keys changed
after 60 sec if at least 10000 keys changed -
重新启动redis服务器 并且指定 配置文件名称 指定方法是在安装路径下用命令行启动 在后面添加参数
D:\Program Files\Redis-x64-3.2.100>redis-server.exe redis.windows.conf
-
-
AOF:
日志记录的方式 可以记录每一条命令的操作 可以每一次命令操作后 持久化数据到一个aof文件
-
编辑配置文件
修改
appendonly no
这一项 默认代表的AOF关闭修改成 yes 开启AOF
2.开启后有三个配置可以设置
appendfsync everysec --每隔一秒进行一次持久化 appendfsync always --每一次操作都进行持久化 appendfsync no --不进行持久化
3.指定配置文件重启服务器 同上
-
Jedis
java操作redis数据库的工具
依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
使用
-
创建JedisPool连接池对象
-
调用方法 getResource() 方法获取Jedis连接
默认配置
/**
* 测试jedis连接池
*/
JedisPool jedisPool=new JedisPool();
//默认配置
Jedis jedis = jedisPool.getResource();
jedis.set("source","连接池设置成功");
jedis.close();
手动配置
/**
* 测试jedis连接池
*/
JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(50);
jedisPoolConfig.setMaxIdle(10);//最大空闲连接
JedisPool jedisPool=new JedisPool(jedisPoolConfig);
Jedis jedis = jedisPool.getResource();
jedis.set("source","hha" );
jedis.close();
运行效果
127.0.0.1:6379> get source
"hha"
手写工具类
public class JedisPoolUtils {
private static JedisPool jedisPool;
static
{
/**
* 类加载器加载配置文件
*/
InputStream inputStream = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
//定义properties对象
Properties properties=new Properties();
try {
//加载获取到的配置文件的输入流
properties.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
//获取数据 设置到jedis的poolconfig中
JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal")));
jedisPoolConfig.setMaxIdle(Integer.parseInt(properties.getProperty("maxIdle")));
jedisPool=new JedisPool(jedisPoolConfig,properties.getProperty("host"),Integer.parseInt(properties.getProperty("port")));
}
public static Jedis getJedis()
{
return jedisPool.getResource();
}
}
测试
Jedis jedis = JedisPoolUtils.getJedis();
Set<String> keys = jedis.keys("*");
for (String key:keys) System.out.println(key);
效果如下
a
mysort
mylist
myset
username