Redis常用密令以及使用java连接操作redis

本文介绍了Redis的基本命令,包括连接、数据操作及监控等,并提供了使用Java进行Redis操作的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



Redis常用命令

 

1连接redis

 redis-cli -h 10.0.0.51 -p 6379

  1. 查看所有key

    keys *

  2. 设置值

    set aaa 100

  3. 获取值

    get aaa

  4. 删除key

    del aaa

  5. 查看数据库的详细信息

    Info

  6. 查看连接客户端信息

    client list

  7. 断开某个客户端的连接

    cleint kill ip地址+端口号

    Eg:cleint kill 10.0.0.51:44706

  8. 查看数据库中记录条数

    Dbsize

  9. 清空所有数据

    Flushall

  10. 监控

    Monitor

     

    Redis数据结构

    Redis支持5中数据类型,string(字符串), hash(哈希), list(列表), set(集合), zset(sorted set:有序集合)

  1. String (字符串)

    Stringredis的最基本的类型,可以理解成与memcached一模一样的类型,一个key对一个value

    String类型是二进制安全的,意思是redisstring可以包含任何数据,比如jpg图片或者序列化对象。

    String类型是redis最基本的数据类型,一个键最大能存储512MB

     

     

     

  2. Hash(哈希)

    Hash是一个键值对集合。

    Hash是一个string类型的fieldvalue的映射表,hash特别适用于存储对象

    每个hash可以存储232次放-1键值对(40多亿)

     

    示例中的myhashhashkey名称 name为属性名,liuzhuang为属性值

  3. List(列表)

    List列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表头部(坐边)或者尾部(右边),每个列表最多可存储40多亿元素

    从右边加,则在末尾加 rpush key value

    从左边加,则在前面加 lpush key value

    遍历 知道长度 lrange key 0 length-1

     不知长度 lrange key 0 -1

    10.0.0.51:6379>

    //从边添加

    10.0.0.51:6379> rpush mylist aaa

    (integer) 1

    10.0.0.51:6379> rpush mylist bbb

    (integer) 2

    10.0.0.51:6379> rpush mylist ccc

    (integer) 3

    10.0.0.51:6379> rindex mylist 0

    (error) ERR unknown command 'rindex'

    //取值

    10.0.0.51:6379> lindex mylist 0

    "aaa"

    10.0.0.51:6379> lindex mylist 1

    "bbb"

    10.0.0.51:6379> lindex mylist 2

    "ccc"

    //遍历

    10.0.0.51:6379> lrange mylist 0 -1

    1) "aaa"

    2) "bbb"

    3) "ccc"

    10.0.0.51:6379> lrange mylist 0 2

    1) "aaa"

    2) "bbb"

    3) "ccc"

    10.0.0.51:6379> lindex mylist -1

    "ccc"

    10.0.0.51:6379>

    10.0.0.51:6379> lpush mylist ddd

    (integer) 4

    10.0.0.51:6379>

    10.0.0.51:6379> lrange mylist 0 -1

    1) "ddd"

    2) "aaa"

    3) "bbb"

    4) "ccc"

     

    List排序

     

  4. Set(集合)

    Setstring类型的无序集合。

    Set中添加值sadd

     

  5. Zset(有序集合)

     

    Zsetset一样,也是string类型元素的集合,且不允许重复的成员。

    不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。

    Zet的成员都是唯一的,但分数(score)却是可以重复的

    Zadd密令 添加元素到集合,元素在集合中存在则更新对应的score

     

     

    使用java操作redis

     

  1. 测试redis连通性

     第一步:注释掉/etc/redis.conf61行下面的bind 127.0.0.1 让所有客户端可以访问redis,并让配置文件生效 redis-server /etc/redis.conf

    重启redis  /bin/systemctl restart  redis.service

    第二步:开启防火墙6379端口 开启端口

    firewall-cmd --zone=public --add-port=6379/tcp --permanent

    并重启防火墙

    firewall-cmd --reload #重启firewall

    编写测试程序:

    1创建工程、创建package、引入jedis-2.9.0.jar

    import redis.clients.jedis.Jedis;

     


    /**

     * 测试redis服务器连接是否正常

     * @author Administrator

     *

     */

     

    public class RedisConnectTest {

     

    /**

     * @param args

     */

    public static void main(String[] args) {

    Jedis jedis = new Jedis("10.0.0.51",6379);

    String ret=jedis.ping();

    System.out.println(ret);

     

    }

    若控制台输出pong则表示联通。

  2. 使用java进行存储读取redis里面的数据

    import java.util.List;

     

    import redis.clients.jedis.Jedis;

     

     

    /**

     * 测试redis服务器连接是否正常

     * @author Administrator

     *

     */

     

    public class RedisConnectTest {

     

    /** 初始化jedis对象

     * @param args

     */

    public static void main(String[] args) {

    //初始化jedis对象

    Jedis jedis = new Jedis("10.0.0.51",6379);

    //测试连通性

    String ret=jedis.ping();

    System.out.println(ret);

    //保存值到redis数据库

    /*jedis.set("hello", "world");

    //获取从redis服务器中某个key的值

    String str=jedis.get("hello");

    System.out.println(str);*/

    //list

    //将数据存储到redis

    /*for(int i=1;i<=6;i++){

    jedis.lpush("myjavalist", i+"00");

    }*/

    //从redis中遍历取值

    /*List<String> lrange= jedis.lrange("myjavalist", 0, -1);

    for(String str:lrange){

    System.out.println(str);

    }*/

     

    }

     

    }




### 如何在 Docker 中安装 Redis 为了在 Docker 容器中运行 Redis,可以按照以下方法操作: 拉取官方的 Redis 镜像并启动容器。通过 `docker pull` 命令获取最新的 Redis 镜像[^1]。 ```bash docker pull redis ``` 接着使用 `docker run` 启动 Redis 容器,并将其绑定到主机的 6379 端口以便外部访问。同时可以通过参数指定容器名称、启用自动重启功能等选项。 ```bash docker run -d --restart=always --name redis-container -p 6379:6379 redis ``` 如果需要为 Redis 设置密码,则可以在命令中加入额外的配置项来实现[^4]。例如下面的例子展示了如何创建一个带有持久化存储和密码保护的 Redis 实例: ```bash docker run --name redis-with-password \ -p 6379:6379 \ -d \ --restart=always \ redis:latest redis-server --appendonly yes --requirepass "yourpassword" ``` 上述命令中的 `--appendonly yes` 参数用于开启 AOF 持久化模式;而 `--requirepass "yourpassword"` 则定义了客户端连接时所需的认证密钥。 对于希望进一步定制化的场景,比如基于特定版本或者包含更多初始化脚本的情况,建议编写自己的 **Dockerfile** 文件来进行构建[^2]。 --- ### Java 应用程序如何连接至 Docker 上的 Redis 为了让 Java 应用能够成功连通已部署好的 Redis 数据库实例,通常需完成以下几个方面的设定工作: #### 1. 获取 Redis 的 IP 地址 或 使用 Host 名称 当 Redis 运行在一个独立的 Docker 容器里头的时候,最直接的办法就是找到该容器对应的内部网络地址。这一步可通过进入正在运作的目标容器内部执行如下指令达成目的: ```bash docker exec -it redis-container /bin/bash cat /etc/hosts ``` 从返回的结果集中读取出属于当前这个 Redis Container 自己的那一行记录下的 IPv4 数字串作为后续编程环节里的目标服务器定位依据之一。 不过更推荐的方式是在启动服务之前就规划好跨不同微服务组件之间的通讯机制设计思路——即利用 Docker Compose 工具统一管理多个关联紧密的服务单元,在同一个虚拟子网环境下相互调用仅依靠简单的 Service Name 即可替代复杂的实际物理层位址信息交换过程。 #### 2. 添加 Jedis Library 至项目依赖列表 Jedis 是目前较为流行的用来处理 Redis 相关事务逻辑的一个开源类库解决方案。如果是 Maven 构建体系的话,请记得更新 pom.xml 文件引入相应坐标描述片段: ```xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.0.1</version><!-- 版本号视需求调整 --> </dependency> ``` Gradle 用户则应编辑 build.gradle 脚本文件添加相似条目: ```gradle implementation 'redis.clients:jedis:4.0.1' ``` #### 3. 编写测试代码验证链接有效性 最后给出一段基础样例演示怎样借助 Jedis API 来尝试建立同远端 Redis Server 的初步握手动作: ```java import redis.clients.jedis.Jedis; public class RedisConnectionTest { public static void main(String[] args) { String redisHost = "localhost"; // 如果在同一台机器上运行, 可保持默认值. int redisPort = 6379; try (Jedis jedis = new Jedis(redisHost, redisPort)) { System.out.println("Connected to Redis."); if ("OK".equals(jedis.ping())) { System.out.println("Ping command succeeded!"); // 若设置了密码,则在此处进行身份验证 String password = "yourpassword"; jedis.auth(password); System.out.println("Authentication successful."); } else { System.err.println("Failed to connect or authenticate with Redis."); } } catch (Exception e) { e.printStackTrace(); } } } ``` 以上代码实现了基本的功能检测流程,包括确认是否能正常响应 PING 请求以及应对可能存在的安全防护措施(如前所述设置过的访问控制令牌)。 --- ### 注意事项 - 当前讨论的前提假设是所有涉及的操作均发生在同一局域网环境之下; - 生产环境中应当考虑更加严谨的安全策略布置方案,例如限制允许接入来源范围、加密传输通道等等因素的影响评估与实施计划安排等问题都需要提前纳入考量范畴之内加以妥善解决才行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sonwing_for

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值