简介

全称:Remote Dictionary Server
开发者: Salvatore Sanfilippo
类型:NoSQL数据库
定义:Redis是一个key-value存储系统
Logo:
Redis基础 - 图1

Redis数据类型

Redis支持五种数据类型:字符串(String)、哈希(Map)、列表(List)、集合(Sets)和有序集合(Sorted Sets)。

String

String是Redis最基本的数据类型,一个key对应一个value。它可以包含任何数据,比如jpg图片或者序列化的对象。一个键最大能存储512MB。下面通过示例了解如何使用:

  1. 127.0.0.1:6379> set name jujianfei
  2. OK
  3. 127.0.0.1:6379> get name
  4. "jujianfei"

Hash

Hash是一个键值对集合。示例如下:

  1. 127.0.0.1:6379> hmset firsthash field1 name field2 jujianfei
  2. OK
  3. 127.0.0.1:6379> hget firsthash field1
  4. "name"
  5. 127.0.0.1:6379> hget firsthash field2
  6. "jujianfei"

示例中我们使用了Redis HMSET和HGET命令,HMSET设置了两个field -> value对,HGET获取对应的value。每个Hash可以存储2 -1键值对 。

List

List是简单的字符串列表,按照插入顺序排序。示例如下:

  1. 127.0.0.1:6379> lpush names jujianfei zhangmeihong happy
  2. (integer) 3
  3. 127.0.0.1:6379> lrange names 0 2
  4. 1) "happy"
  5. 2) "zhangmeihong"
  6. 3) "jujianfei"

List可存储2 -1个元素。

Set

Set是String类型的无序集合。示例如下:

  1. 127.0.0.1:6379> sadd nameset jujianfei zhangmeihong happy
  2. (integer) 3
  3. 127.0.0.1:6379> sadd nameset love
  4. (integer) 1
  5. 127.0.0.1:6379> sadd nameset love
  6. (integer) 0
  7. 127.0.0.1:6379> smembers nameset
  8. 1) "zhangmeihong"
  9. 2) "happy"
  10. 3) "love"
  11. 4) "jujianfei"

sadd命令:添加一个string元素到key对应的set集合中,成功返回1;如果元素已经在集合中存在,返回0。容量同List。

Sorted Set

Sorted Set也可写为ZSet,它和Set一样,也是String类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的值。Redis正是通过这个值来为集合中的成员进行从小到大的排序。这个double值可以重复。示例如下:

  1. 127.0.0.1:6379> zadd fruit 3 apple
  2. (integer) 1
  3. 127.0.0.1:6379> zadd fruit 0 banana
  4. (integer) 1
  5. 127.0.0.1:6379> zadd fruit 2 pineapple
  6. (integer) 1
  7. 127.0.0.1:6379> zrangebyscore fruit 0 2
  8. 1) "banana"
  9. 2) "pineapple"
  10. 127.0.0.1:6379> zrangebyscore fruit 0 1
  11. 1) "banana"
  12. 127.0.0.1:6379> zrange fruit 0 2
  13. 1) "banana"
  14. 2) "pineapple"
  15. 3) "apple"

Redis命令

Redis命令用于在Redis服务上执行操作。要在Redis服务上执行命令需要一个Redis客户端。

启动Redis服务器

  1. C:\Users\Administrator>redis-server
  2. [9644] 15 Jul 11:07:09.342
  3. # Warning: no config file specified, using the default config.
  4. In order to specify a config file use redis-server /path/to/redis.conf
  5. _._
  6. _.-``__ ''-._
  7. _.-`` `. `_. ''-._ Redis 3.2.100 (00000000/0) 64 bit
  8. .-`` .-```. ```\/ _.,_ ''-._
  9. ( ' , .-` | `, ) Running in standalone mode
  10. |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
  11. | `-._ `._ / _.-' | PID: 9644
  12. `-._ `-._ `-./ _.-' _.-'
  13. |`-._`-._ `-.__.-' _.-'_.-'|
  14. | `-._`-._ _.-'_.-' | http://redis.io
  15. `-._ `-._`-.__.-'_.-' _.-'
  16. |`-._`-._ `-.__.-' _.-'_.-'|
  17. | `-._`-._ _.-'_.-' |
  18. `-._ `-._`-.__.-'_.-' _.-'
  19. `-._ `-.__.-' _.-'
  20. `-._ _.-'
  21. `-.__.-'
  22. [9644] 15 Jul 11:07:09.346 # Server started, Redis version 3.2.100
  23. [9644] 15 Jul 11:07:09.347 * DB loaded from disk: 0.000 seconds
  24. [9644] 15 Jul 11:07:09.347 * The server is now ready to accept connections on port 6379

启动Redis客户端

打开cmd,输入命令redis-cli,该命令会连接本地的Redis服务。

  1. C:\Users\Administrator>redis-cli
  2. 127.0.0.1:6379>

更多命令参考:https://redis.io/commands

Java使用Redis

引入依赖:

  1. <dependency>
  2. <groupId>redis.clients</groupId>
  3. <artifactId>jedis</artifactId>
  4. <version>2.9.0</version>
  5. </dependency>

示例代码:

  1. public class RedisTest {
  2. public static void main(String[] args) {
  3. //连接本地的Redis服务
  4. Jedis jedis = new Jedis("localhost");
  5. //如果有密码,需输入密码
  6. jedis.auth("jujianfei");
  7. System.out.println("连接成功");
  8. //查看服务是否运行
  9. System.out.println("服务正在运行:" + jedis.ping());
  10. //String使用
  11. jedis.set("redisTest", "Hello Redis");
  12. System.out.println("redis存储的字符串为:" + jedis.get("redisTest"));
  13. //List使用
  14. jedis.lpush("fileTypes","txt");
  15. jedis.lpush("fileTypes","docx");
  16. jedis.lpush("fileTypes","ppt");
  17. List<String> list = jedis.lrange("fileTypes",0,2);
  18. list.forEach(x -> System.out.println("列表项为:"+ x));
  19. jedis.close();
  20. }
  21. }

打印结果:

  1. 连接成功
  2. 服务正在运行:PONG
  3. redis存储的字符串为:Hello Redis
  4. 列表项为:ppt
  5. 列表项为:docx
  6. 列表项为:txt

参考资料:菜鸟教程