简介
全称:Remote Dictionary Server
开发者: Salvatore Sanfilippo
类型:NoSQL数据库
定义:Redis是一个key-value存储系统
Logo:
Redis数据类型
Redis支持五种数据类型:字符串(String)、哈希(Map)、列表(List)、集合(Sets)和有序集合(Sorted Sets)。
String
String是Redis最基本的数据类型,一个key对应一个value。它可以包含任何数据,比如jpg图片或者序列化的对象。一个键最大能存储512MB。下面通过示例了解如何使用:
127.0.0.1:6379> set name jujianfei
OK
127.0.0.1:6379> get name
"jujianfei"
Hash
Hash是一个键值对集合。示例如下:
127.0.0.1:6379> hmset firsthash field1 name field2 jujianfei
OK
127.0.0.1:6379> hget firsthash field1
"name"
127.0.0.1:6379> hget firsthash field2
"jujianfei"
示例中我们使用了Redis HMSET和HGET命令,HMSET设置了两个field -> value对,HGET获取对应的value。每个Hash可以存储2 -1键值对 。
List
List是简单的字符串列表,按照插入顺序排序。示例如下:
127.0.0.1:6379> lpush names jujianfei zhangmeihong happy
(integer) 3
127.0.0.1:6379> lrange names 0 2
1) "happy"
2) "zhangmeihong"
3) "jujianfei"
List可存储2 -1个元素。
Set
Set是String类型的无序集合。示例如下:
127.0.0.1:6379> sadd nameset jujianfei zhangmeihong happy
(integer) 3
127.0.0.1:6379> sadd nameset love
(integer) 1
127.0.0.1:6379> sadd nameset love
(integer) 0
127.0.0.1:6379> smembers nameset
1) "zhangmeihong"
2) "happy"
3) "love"
4) "jujianfei"
sadd命令:添加一个string元素到key对应的set集合中,成功返回1;如果元素已经在集合中存在,返回0。容量同List。
Sorted Set
Sorted Set也可写为ZSet,它和Set一样,也是String类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的值。Redis正是通过这个值来为集合中的成员进行从小到大的排序。这个double值可以重复。示例如下:
127.0.0.1:6379> zadd fruit 3 apple
(integer) 1
127.0.0.1:6379> zadd fruit 0 banana
(integer) 1
127.0.0.1:6379> zadd fruit 2 pineapple
(integer) 1
127.0.0.1:6379> zrangebyscore fruit 0 2
1) "banana"
2) "pineapple"
127.0.0.1:6379> zrangebyscore fruit 0 1
1) "banana"
127.0.0.1:6379> zrange fruit 0 2
1) "banana"
2) "pineapple"
3) "apple"
Redis命令
Redis命令用于在Redis服务上执行操作。要在Redis服务上执行命令需要一个Redis客户端。
启动Redis服务器
C:\Users\Administrator>redis-server
[9644] 15 Jul 11:07:09.342
# Warning: no config file specified, using the default config.
In order to specify a config file use redis-server /path/to/redis.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.100 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 9644
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[9644] 15 Jul 11:07:09.346 # Server started, Redis version 3.2.100
[9644] 15 Jul 11:07:09.347 * DB loaded from disk: 0.000 seconds
[9644] 15 Jul 11:07:09.347 * The server is now ready to accept connections on port 6379
启动Redis客户端
打开cmd,输入命令redis-cli,该命令会连接本地的Redis服务。
C:\Users\Administrator>redis-cli
127.0.0.1:6379>
更多命令参考:https://redis.io/commands
Java使用Redis
引入依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
示例代码:
public class RedisTest {
public static void main(String[] args) {
//连接本地的Redis服务
Jedis jedis = new Jedis("localhost");
//如果有密码,需输入密码
jedis.auth("jujianfei");
System.out.println("连接成功");
//查看服务是否运行
System.out.println("服务正在运行:" + jedis.ping());
//String使用
jedis.set("redisTest", "Hello Redis");
System.out.println("redis存储的字符串为:" + jedis.get("redisTest"));
//List使用
jedis.lpush("fileTypes","txt");
jedis.lpush("fileTypes","docx");
jedis.lpush("fileTypes","ppt");
List<String> list = jedis.lrange("fileTypes",0,2);
list.forEach(x -> System.out.println("列表项为:"+ x));
jedis.close();
}
}
打印结果:
连接成功
服务正在运行:PONG
redis存储的字符串为:Hello Redis
列表项为:ppt
列表项为:docx
列表项为:txt
参考资料:菜鸟教程