ITPub博客

首页 > 应用开发 > Java > 好程序员Java学习路线分享Redis快速入门

好程序员Java学习路线分享Redis快速入门

原创 Java 作者:好程序员IT 时间:2019-09-20 11:29:14 0 删除 编辑

好程序员Java 学习路线分享 Redis 快速入门,Redis 的启动

1. 基于 docker 启动

1 ) 不带配置文件启动 docker run -p 6379:6379 redis

2 ) 带配置文件启动

docker run -p 6379:6379 -v /usr/local/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf

 

3 )使用 docker 容器内的客户端来操作 redis 服务器

以交互的方式进入到redis 容器,再在 /usr/local/bin/ 使用 redis-cli 工具连接 redis 服务器



得输密码

auth java1904

2. 使用原生 tar 包启动

 

1) 从官方下载 tar.gz 压缩包,上传到 linux 中

 

2 )解压

tar -zxvf  ...

 

3 )下载 make  

   apt-get install make

 

4) 下载 gcc ,因为 redis 是 c 写的,需要 gcc 工具

apt-get intall gcc

 

5)  进入解压出来的文件夹内,然后使用 make 进行编译

 

6 )进入  src ,执行 ./redis-server  ../redis.conf     开启服务端

 

7 )使用 redis 内部的客户端,来连接服务端,对 redis 服务端进行操作

  src 里    执行    ./redis-cli


 

二、 Redis 桌面版客户端工具的使用


三、Redis 的配置文件

redis.conf

在启动redis 服务器时,可以通过配置文件里面的参数的设置,来设置服务器,如果启动 redis 服务器,不带配置文件,那么参数都是默认值。

1. 解除本机绑定

# bind  127.0.0.1  注释掉

2.redis 数据库默认拥有 16 个库,数据会被存放在这 16 个库中的某一个。

3. 设置密码

在连接时需要输入密码


四、Java 的 Redis 客户端: Jedis

redis 自带的客户端:  redis-cli

1. 引入依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

2. 使用 Jedis 工具类

public class MyRedis {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("192.168.2.128",6379);
        jedis.auth("java1904");
        jedis.set("两个月后的目标","12k");
        String target = jedis.get("两个月后的目标");
        System.out.println(target);
    }
}

五、Redis 的五大数据类型

1. String 类型

1 )增删改查

set  key  value     添加 / 修改  键值对

get  key  ==> value    根据键得到值

del  key1 [key2...]   根据键删除键值对,返回值删除的个数

mset  k1 v1  k2 v2 [key value ...]     一次性插入多个值

mget  k1  k2               一次性拿多个值

 

2) 其他命令

incr       对整数进行自增,浮点数也不行 :   set  k1  1000          incr k1

decr     对整数进行递减

 

incrby   键  步长    一次增长指定步长的值    

decrby   键  步长   一次减少指定步长的值


2. hash 类型

数据类型的特点:

键 -   值:  键值对

而且  键里可以存放多个键值对

 

hset   k1    键 - 值

hget   k1   键

 

hmset  k1   键 - 值  键 - 值  ...

hmget  k1   键  键 ...

 

hdel    k1    键  键 ...

 

其他命令:

hlen  k1

查看k1 有几个键值对

 

hexists k1  键

查看键是否存在于k1 中

hgetall k1

获得K1 中的所有的键值对

 

注意:  在实际使用时,往往会使用这种命名方式:   通过“ : ”对键名进行分割,以起到语义化的效果。

比如  “ user:1001:dreams ”   :  用户 id 是 1001 的这个用户的所有梦想

 

如果键冲突了,那么如果之前的数据类型与现在的数据类型不同,则会报这个异常:

redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding the wrong kind of value

 

使用jedis 进行操作时, hmset 中需要存入 map 集合

HashMap<String,String> map = new HashMap<String, String>();
map.put("d1","10000");
map.put("d2","20000");
jedis.hmset("user:1001:dreams",map);

hash 类型的应用场景: 存对象时更方便


3.  列表类型  List

列表可以实现栈和队列的效果

lpop  从左边出列队


rpush  和   rpop


模拟栈的效果:

 

模拟队列的效果:  先进先出

 

其他命令:

LLEN key ,查询列表的长度

LINDEX key index ,获取指定索引的值  get(int index)

LSET key index value ,设置指定索引的值

Ltrim key start end  保留指定索引范围的值

4.Set 类型

Sadd key element [element]  添加元素

Scard key  计算元素个数

Smembers key  获取所有的元素

Srem key element [element]  删除元素  

Sismember key element  判断元素是否在集合中,存在返回 1 ,否则返回 0

Spop key  从集合随机弹出元素

5.zset 类型

是一个有序的集合

 

常用命令:

Zadd key  score member [ score member ...]  添加成员,并为每个成员设置分数

Zcard key  计算成员的个数

Zscore key member  计算某个成员的分数

Zrank key member  计算某个成员的排名

Zincrby key increment member  增加成员的分数

Zrange key start end withscores  返回指定排名范围的成员

zrevrange key start end  逆序展示

Zrem key member [member]  删除成员、

 

jedis 的操作

@Test
public void testZset(){
    Jedis jedis = new Jedis("192.168.2.128",6379);
    jedis.auth("java1904");
    HashMap<String,Double> map = new HashMap<String, Double>();
    map.put("l1",100d);
    map.put("l2",200d);
    // map是一个HashMap<String,Double> 的map 
    jedis.zadd("order1",map);
    jedis.zincrby("order1",200d,"l1");
    Set<String> order1 = jedis.zrevrange("order1", 0, -1);
    System.out.println(order1);
}

六、使用Jedis 连接池

package com.qf.redis.util;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisPoolUtil {
    private static JedisPool pool ;
    static{
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxIdle(100);
        config.setMaxWaitMillis(2000);
        config.setMaxTotal(200);
        String host = "192.168.2.128";
        pool = new JedisPool(config,host);
    }
    public static Jedis getJedisFromPool(){
       return  pool.getResource();
    }
}

使用连接池:

Jedis jedis = JedisPoolUtil. getJedisFromPool();

jedis.auth( "java1904");

 

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69913892/viewspace-2657664/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
欢迎关注公众号:好程序员特训营 web前端教程分享 723729549 大数据教程分享 703503210

注册时间:2019-03-20

  • 博文量
    539
  • 访问量
    410787