简介
全称: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 jujianfeiOK127.0.0.1:6379> get name"jujianfei"
Hash
Hash是一个键值对集合。示例如下:
127.0.0.1:6379> hmset firsthash field1 name field2 jujianfeiOK127.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) 3127.0.0.1:6379> lrange names 0 21) "happy"2) "zhangmeihong"3) "jujianfei"
List可存储2 -1个元素。
Set
Set是String类型的无序集合。示例如下:
127.0.0.1:6379> sadd nameset jujianfei zhangmeihong happy(integer) 3127.0.0.1:6379> sadd nameset love(integer) 1127.0.0.1:6379> sadd nameset love(integer) 0127.0.0.1:6379> smembers nameset1) "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) 1127.0.0.1:6379> zadd fruit 0 banana(integer) 1127.0.0.1:6379> zadd fruit 2 pineapple(integer) 1127.0.0.1:6379> zrangebyscore fruit 0 21) "banana"2) "pineapple"127.0.0.1:6379> zrangebyscore fruit 0 11) "banana"127.0.0.1:6379> zrange fruit 0 21) "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-cli127.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();}}
打印结果:
连接成功服务正在运行:PONGredis存储的字符串为:Hello Redis列表项为:ppt列表项为:docx列表项为:txt
参考资料:菜鸟教程
