Redis 基础概念+应用

版权声明:本文为博主原创文章,未经博主允许不得转载,更多文章请继续关注博客更新! https://blog.csdn.net/u010282984/article/details/83215795

 

简介

全称: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 32 -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可存储232 -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

猜你喜欢

转载自blog.csdn.net/u010282984/article/details/83215795