一、redis文件夹下的可执行文件(文章尾部有示例代码)

可执行文件

作用

redis-server

启动redis

redis-cli

redis命令行工具

redis-benchmark

基准测试工具

redis-check-aof

AOP持久化文件检测工具和修复工具

redis-check-dump

RDB持久化文件检测工具和修复工具

redis-sentinel

启动redis-sentinel

二、可以使用两种方式连redis服务器

  • 第一种:交互式方式
  • $redis-cli -h 127.0.0.1 -p 6379
  • set hello world
  • get hello
  • 第二种:命令方式
  • get hello

三、常用命令

1、连接只剩相关的命令

  • 默认直接连接 远程连接 -h 192.168.1.20 -p 6379
  • ping:测试连接是否存活,如果正常会返回pong
  • echo:打印
  • select:切换到指定的数据库,数据库存索引号index用数字值指定,以0作为起始索引值
  • quit:关闭连接
  • auth:简单密码认证

2、服务器端相关命令

  • time:返回当前服务器时间
  • client list: 返回所有连接到服务器的客户端信息和统计数据  参见http://redisdoc.com/server/client_list.html
  • client kill ip:port:关闭地址为 ip:port 的客户端
  • save:将数据同步保存到磁盘
  • bgsave:将数据异步保存到磁盘
  • lastsave:返回上次成功将数据保存到磁盘的Unix时戳
  • shundown:将数据同步保存到磁盘,然后关闭服务
  • info:提供服务器的信息和统计
  • config resetstat:重置info命令中的某些统计数据
  • config get:获取配置文件信息
  • config set:动态地调整 Redis 服务器的配置(configuration)而无须重启,可以修改的配置参数可以使用命令 CONFIG GET * 来列出
  • config rewrite:Redis 服务器时所指定的 redis.conf 文件进行改写
  • monitor:实时转储收到的请求
  • slaveof:改变复制策略设置

3、发布订阅相关命令

  • psubscribe:订阅一个或多个符合给定模式的频道 例如psubscribe news.* tweet.*
  • publish:将信息 message 发送到指定的频道 channel 例如publish msg "good morning"
  • pubsub channels:列出当前的活跃频道 例如PUBSUB CHANNELS news.i*
  • pubsub numsub:返回给定频道的订阅者数量 例如PUBSUB NUMSUB news.it news.internet news.sport news.music
  • pubsub numpat:返回客户端订阅的所有模式的数量总和
  • punsubscribe:指示客户端退订所有给定模式。
  • subscribe:订阅给定的一个或多个频道的信息。例如 subscribe msg chat_room
  • unsubscribe:指示客户端退订给定的频道。

4、对key操作的命令

  • exists(key):确认一个key是否存在
  • del(key):删除一个key
  • type(key):返回值的类型
  • keys(pattern):返回满足给定pattern的所有key
  • randomkey:随机返回key空间的一个
  • keyrename(oldname, newname):重命名key
  • dbsize:返回当前数据库中key的数目
  • expire:设定一个key的活动时间(s)
  • ttl:获得一个key的活动时间
  • move(key, dbindex):移动当前数据库中的key到dbindex数据库
  • flushdb:删除当前选择数据库中的所有key
  • flushall:删除所有数据库中的所有key

5、对String操作的命令

  • set(key, value):给数据库中名称为key的string赋予值value
  • get(key):返回数据库中名称为key的string的value
  • getset(key, value):给名称为key的string赋予上一次的value
  • mget(key1, key2,…, key N):返回库中多个string的value
  • setnx(key, value):添加string,名称为key,值为value
  • setex(key, time, value):向库中添加string,设定过期时间time
  • mset(key N, value N):批量设置多个string的值
  • msetnx(key N, value N):如果所有名称为key i的string都不存在
  • incr(key):名称为key的string增1操作
  • incrby(key, integer):名称为key的string增加integer
  • decr(key):名称为key的string减1操作
  • decrby(key, integer):名称为key的string减少integer
  • append(key, value):名称为key的string的值附加value
  • substr(key, start, end):返回名称为key的string的value的子串

6、对list操作的命令

  • rpush(key, value):在名称为key的list尾添加一个值为value的元素
  • lpush(key, value):在名称为key的list头添加一个值为value的 元素
  • llen(key):返回名称为key的list的长度
  • lrange(key, start, end):返回名称为key的list中start至end之间的元素
  • ltrim(key, start, end):截取名称为key的list
  • lindex(key, index):返回名称为key的list中index位置的元素
  • lset(key, index, value):给名称为key的list中index位置的元素赋值
  • lrem(key, count, value):删除count个key的list中值为value的元素
  • lpop(key):返回并删除名称为key的list中的首元素
  • rpop(key):返回并删除名称为key的list中的尾元素
  • blpop(key1, key2,… key N, timeout):lpop命令的block版本。
  • brpop(key1, key2,… key N, timeout):rpop的block版本。
  • rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

7、对Set操作的命令

  • sadd(key, member):向名称为key的set中添加元素member
  • srem(key, member) :删除名称为key的set中的元素member
  • spop(key) :随机返回并删除名称为key的set中一个元素
  • smove(srckey, dstkey, member) :移到集合元素
  • scard(key) :返回名称为key的set的基数
  • sismember(key, member) :member是否是名称为key的set的元素
  • sinter(key1, key2,…key N) :求交集
  • sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
  • sunion(key1, (keys)) :求并集
  • sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
  • sdiff(key1, (keys)) :求差集
  • sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
  • smembers(key) :返回名称为key的set的所有元素
  • srandmember(key) :随机返回名称为key的set的一个元素

8、对Hash操作的命令

  • hset(key, field, value):向名称为key的hash中添加元素field
  • hget(key, field):返回名称为key的hash中field对应的value
  • hmget(key, (fields)):返回名称为key的hash中field i对应的value
  • hmset(key, (fields)):向名称为key的hash中添加元素field
  • hincrby(key, field, integer):将名称为key的hash中field的value增加integer
  • hexists(key, field):名称为key的hash中是否存在键为field的域
  • hdel(key, field):删除名称为key的hash中键为field的域
  • hlen(key):返回名称为key的hash中元素个数
  • hkeys(key):返回名称为key的hash中所有键
  • hvals(key):返回名称为key的hash中所有键对应的value
  • hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

四、示例代码(部分方法的示例,后续会补全)

public class MyRedis {
// 连接对象 localhost 为本机 如果是远程连接换位IP 6379是端口号
private Jedis jedis = new Jedis("localhost", 6379); /**
* 测试连接
*/
@Test
public void myTest1() {
System.out.println(jedis.ping());
jedis.set("hello", "第一个string");
System.out.println(jedis.get("hello"));
jedis.close();
} /**
* 操作String
*/ @Test
public void test_String() {
jedis.flushAll();
// 获取Jedis对象
// 添加一条数据
jedis.set("name", "王世磊");
// 根据key找到对应的value的值
System.out.println(jedis.get("name"));
// 多次对key进行设置值,则最后一次会覆盖之前的值(没有类似update)
// 字符串拼接
jedis.append("name", "很帅");
System.out.println(jedis.get("name"));
// 删除某个键
jedis.set("p3", "4");
jedis.del("p3");
// 同时设置多个键值对:获取值的方式同上
jedis.mset("m1", "1", "m2", "2", "m3", "3", "m4", "4", "m5", "5", "m6", "6", "m7", "7", "m8", "8");
System.out.println(jedis.mget("m1", "m2", "m3", "m4", "m5", "m6", "m7", "m8").toString());
// 假如值里面有数字(字符串形式),可以进行+1的操作(incr)
jedis.set("n1", "1");
jedis.incr("n1");
System.out.println(jedis.get("n1"));
// 进行-1的操作(decr)
jedis.decr("n1");
System.out.println(jedis.get("n1"));
// 某个值增加多少(incrBy)
jedis.set("p2", "4");
jedis.incrBy("p2", 5);
System.out.println(jedis.get("p2"));
// 某个值减少多少(decrBy)
jedis.incrBy("p2", 2);
System.out.println(jedis.get("p2"));
// 判断是否存在某个key(exists)
System.out.println(jedis.exists("a1"));
System.out.println(jedis.exists("p1"));
// 设置值的时间:存在5s(setex)
jedis.setex("s1", 5, "4");
// 查询值的存活时间:当 key不存在时,返回 -2,当key存在但没有设置剩余生存时间时,返回-1,
jedis.setex("s2", 200, "4");
jedis.set("s3", "4");
// 当key存在且设定有存活时间 以秒为单位,返回key的剩余生存时间(ttl)
System.out.println(jedis.ttl("s2"));
// 当key不存在
System.out.println(jedis.ttl("s100"));
// 当key存在 但是没有设定存活时间
System.out.println(jedis.ttl("s3"));
// 去掉key的时间设置:不再有失效时间(persist)
jedis.persist("s2");
System.out.println(jedis.ttl("s2"));
// 关闭连接
jedis.close();
} /**
* 操作List
*/
@Test
public void test_List() {
jedis.flushAll();
// 保存数据:lpush-->left push
jedis.lpush("l1", "数据1", "数据2", "数据3");
// 查询:第一个值是key,第二个值表示从0开始,第三个值表示结束(-1表示取全部)(lrange)
System.out.println(jedis.lrange("l1", 0, -1));
// userListA当中的值排列情况:["Kevin Durant","stephen curry","kobe bryant","king james"]
// 保存数据:rpush-->right push
jedis.rpush("userListA", "Kevin Durant", "stephen curry", "kobe bryant", "king james");
// 查询:第一个值是key,第二个值表示从0开始,第三个值表示结束(-1表示取全部)
System.out.println(jedis.lrange("userListA", 0, -1));
/*
* userListB当中值排列情况:["Kevin Durant","stephen curry","kobe bryant","king
* james","Wilt Chamberlain","John Smith","Karl Malone"]
*/
jedis.rpush("userListB", "Kevin Durant", "stephen curry", "kobe bryant", "king james", "Wilt Chamberlain",
"John Smith", "Karl Malone");
// 移除并返回列表key的头元素:lpop-->left pop
System.out.println(jedis.lpop("userListB"));
// 移除并返回列表key的尾元素:rpop-->right pop
System.out.println(jedis.rpop("userListB"));
// 删除key
jedis.del("l1");
System.out.println(jedis.get("l1"));
// 查询特定位置的值:idnex从0开始(lindex)
System.out.println(jedis.lindex("userListA", 1));
// 对list进行裁剪:只保留下标1-3的值,其他的全部删除,下标从0开始(ltrim)
System.out.println(jedis.ltrim("userListA", 1, 3));
System.out.println(jedis.lrange("userListA", 0, -1));
// 根据参数count的值,移除列表中与参数value相等的元素。
jedis.rpush("list1", "1", "1", "1", "1", "1", "2", "3", "4", "5", "6", "7", "8");
System.out.println(jedis.lrange("list1", 0, -1));
jedis.lrem("list1", 3, "1");
System.out.println(jedis.lrange("list1", 0, -1));
// lrem(key, count, value):删除count个key的list中值为value的元素
jedis.rpush("list2", "1", "1", "3", "1", "1", "2", "3", "2", "3", "3", "4", "3", "5", "3", "1", "4", "2", "6",
"7", "5");
// lpop(key):返回并删除名称为key的list中的首元素
jedis.lpop("list2");
System.out.println(jedis.lrange("list2", 0, -1));
// rpop(key):返回并删除名称为key的list中的尾元素
jedis.rpop("list2");
System.out.println(jedis.lrange("list2", 0, -1));
// 从users的右边弹出一个元素,把该元素左插入到players列表当中(rpoplpush)
jedis.rpoplpush("list2", "list2");
System.out.println(jedis.lrange("list2", 0, -1));
}
}

Redis简单命令(部分示例代码)的更多相关文章

  1. unity Dotween插件的简单介绍及示例代码

    unity里面做插值动画的插件有许多,比较常见的有itween.hotween.dotween.根据大家的反馈和实际体验来说,dotween插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的 ...

  2. Redis | Redis常用命令及示例总结(API)

    目录 前言 1. Key(键) 1.1 键的基本操作功能 del move sort rename renamenx migrate 1.2 键的获取功能 type exists randomkey ...

  3. redis 简单命令操作

    一.概述: 在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String.List.Set.Hashes和Sorted-Set.这些命令都具有一个共同点,即所有的操作都是针对与K ...

  4. redis简单命令总结

    1.连接到redis服务器:redis-cli -h 127.0.0.1 -p 6379 -a 密码 select index 切换 redis 数据库 flushdb 删除当前数据库所有的 key ...

  5. Redis 简单命令

    1. 新增 set keyName "keyValue" 2. 获取 get keyName 查看所有Key keys * 3. 删除 //删除当前数据库中的所有Key flush ...

  6. redis 学习笔记(2)-client端示例代码

    redis提供了几乎所有主流语言的client,java中主要使用二种:Jedis与Redisson 一.Jedis的使用 <dependency> <groupId>redi ...

  7. redis 的简单命令

    以下实例讲解了如何启动 redis 客户端: 启动 redis 客户端,打开终端并输入命令 redis-cli.该命令会连接本地的 redis 服务. $redis-cli redis > re ...

  8. Redis学习记录及Jedis代码示例

    文章目录 二.Redis简介 三.Redis安装 1. 下载并解压安装 2. 安装C语言编译环境 3. 修改安装位置 4. 编译安装 5.启动Redis服务器 ①默认启动 ②定制配置项启动 [1]准备 ...

  9. JDBC简单示例代码

    本文章教程中将演示如何创建一个简单的JDBC应用程序的示例. 这将显示如何打开数据库连接,执行SQL查询并显示结果. 这个示例代码中涉及所有步骤,一些步骤将在本教程的后续章节中进行说明. 创建JDBC ...

随机推荐

  1. word2vec:CBOW和skip-gram模型

    1.CBOW模型 之前已经解释过,无论是CBOW模型还是skip-gram模型,都是以Huffman树作为基础的.值得注意的是,Huffman树中非叶节点存储的中间向量的初始化值是零向量,而叶节点对应 ...

  2. 音频工具kaldi部署及模型制作调研学习

    语音识别简介 语音识别(speech recognition)技术,也被称为自动语音识别(英语:Automatic Speech Recognition, ASR).计算机语音识别(英语:Comput ...

  3. 【新手向】如何学习Java集合

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 如果认识我的同学可能就知道,我已经写过很多系列级 ...

  4. Ansible 常见模块介绍

    目录 Ansible 常见模块介绍 ping 模块 command 模块 cron 模块 user 模块 group 模块 copy 模块 file 模块 service 模块 shell 模块 sc ...

  5. 如何切换本地的GIT账号

    如何切换本地的GIT账号 1.为什么登陆第一次Git之后,就不用登陆了呢? 因为电脑已经将你的登陆凭据给保存起来了. 这也正是你不知道如何切换账号的原因. 2.在哪里能看已经保存的登陆凭证呢?并能够切 ...

  6. 基于vue的cropper插件编写分享

    目录 简介 实现功能 实现原理 github地址:https://github.com/yinzhida/vue-crop git clone: https://github.com/yinzhida ...

  7. eNSP 简介及基础操作

    eNSP 一. eNSP简介 eNSP是一款由华为自主研发的.免费的.可扩展的.图形化操作的网络仿真工具平台,主要对企业网络路由器.交换机及相关物理设备进行软件仿真,支持大型网络模拟.界面如下: 界面 ...

  8. 用Selenium自动化测试时,让ChromeDriver中不显示“正受到自动测试软件控制”

    背景: 在用Selenium做自动化测试的时候,默认ChromeDriver是会提示“Chrom正受到自动测试软件控制”的.如下图这样.但我们有些场景下,不希望这个提示出现.本文探索了几种语言去掉这个 ...

  9. [TimLinux] docker CentOS7入门——服务(2)

    1. 服务含义 分布式应用中,应用的不同部分即称为“服务”,视频网站是一个分布式应用,包含有:数据的存储,视频的转码,前端展示等部分,对应的这些部分即称为相应的服务.docker平台中,定义.运行和扩 ...

  10. spring源码学习之设计模式(1)单例模式

    众所周知,单例模式分为饿汉式和懒汉式,昨天在看了<spring5核心原理与30个类手写实战>之后才知道饿汉式有很多种写法,分别适用于不同场景,避免反射,线程不安全问题.下面就各种场景.采用 ...