Redis入门
一:redis基础命令
三、Redis 常用命令集 1)连接操作命令 quit:关闭连接(connection) auth:简单密码认证 help cmd: 查看cmd帮助,例如:help quit 2)持久化 save:将数据同步保存到磁盘 bgsave:将数据异步保存到磁盘 lastsave:返回上次成功将数据保存到磁盘的Unix时戳 shundown:将数据同步保存到磁盘,然后关闭服务 3)远程服务控制 info:提供服务器的信息和统计 monitor:实时转储收到的请求 slaveof:改变复制策略设置 config:在运行时配置Redis服务器 4)对value操作的命令 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的活动时间 select(index):按索引查询 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 9) Redis 发布订阅命令 PSUBSCRIBE pattern [pattern ...] :订阅一个或多个符合给定模式的频道。 PUBSUB subcommand [argument [argument ...]] :查看订阅与发布系统状态。 PUBLISH channel message :将信息发送到指定的频道。 PUNSUBSCRIBE [pattern [pattern ...]] :退订所有给定模式的频道。 SUBSCRIBE channel [channel ...] :订阅给定的一个或多个频道的信息。 UNSUBSCRIBE [channel [channel ...]] :指退订给定的频道。 10) Redis 事务命令 DISCARD :取消事务,放弃执行事务块内的所有命令。 EXEC :执行所有事务块内的命令。 MULTI :标记一个事务块的开始。 UNWATCH :取消 WATCH 命令对所有 key 的监视。 WATCH key [key ...] :监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。 11) 查看keys个数 keys * // 查看所有keys keys prefix_* // 查看前缀为"prefix_"的所有keys 12) 清空数据库 flushdb // 清除当前数据库的所有keys flushall // 清除所有数据库的所有keys
二:测试代码
2.1:配置Jedis对象
package com.jachs.redis; import redis.clients.jedis.Jedis; /** * * @author zhanchaohan * */ public class RedisConfiger { public Jedis init() { // 连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost"); // 如果 Redis 服务设置来密码,需要下面这行,没有就不需要 // jedis.auth("123456"); System.out.println("连接成功"); // 查看服务是否运行 System.out.println("服务正在运行: " + jedis.ping()); return jedis; } /*** * 刷新数据库,清空全部数据 * @param jedis */ public void flushDB(Jedis jedis) { jedis.flushDB(); } /*** * 查看某个key的剩余生存时间,单位【秒】.永久生存或者不存在的都返回-1 * @param jedis * @param key * @return */ public Long ttl(Jedis jedis,String key) { return jedis.ttl(key); } }
2.2:测试添加数据
package com.jachs.redis; import java.text.SimpleDateFormat; import org.junit.Test; import redis.clients.jedis.Jedis; /*** * * @author zhanchaohan<br> * save:将数据同步保存到磁盘<br> * bgsave:将数据异步保存到磁盘<br> * lastsave:返回上次成功将数据保存到磁盘的Unix时戳<br> * shundown:将数据同步保存到磁盘,然后关闭服务<br> * 本地持久化路径在配置文件中redis.windows.conf,dbfilename属性为文件名,dir为存储的文件路径 */ public class AddTest { Jedis jedis = new RedisConfiger().init(); /*** * 测试保存数据 */ @Test public void testSAVEDATE() { jedis.configSet("dir", "F:\\down_load\\redis");//设置初始化的配置,修改物理文件存储路径 jedis.configSet("dbfilename", "data");//设置初始化的配置,修改物理文件存储名称 System.out.println(jedis.save()); } /*** * 关闭服务 */ @Test public void testSHOUDOWN() { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(jedis.lastsave()*1000)); // System.out.println(jedis.shutdown());//关闭服务,关闭之前请确保持久化数据 } /*** * 简单键值对存储 */ @Test public void test() { // 存储数据到列表中 jedis.lpush("site-list", "Runoob"); jedis.lpush("site-list", "Google"); jedis.lpush("site-list", "Taobao"); } /*** * 判断索引是否存在 */ @Test public void test1() { jedis.flushDB();// 清空redis // jedis.set("AAA", "CCC"); Boolean exits = jedis.exists("AAA"); System.out.println(exits); } /*** * 一次添加多条 */ @Test public void test2() { System.out.println("一次性新增key201,key202,key203,key204及其对应值:" + jedis.mset("key201", "value201", "key202", "value202", "key203", "value203", "key204", "value204")); } /*** * */ @Test public void test3() { jedis. } }
2.3:测试查询数据
package com.jachs.redis; import java.util.Iterator; import java.util.List; import java.util.Set; import org.junit.Test; import redis.clients.jedis.Jedis; /*** * * @author zhanchaohan * */ public class QueryTest { Jedis jedis = new RedisConfiger().init(); /** * 查询全部key值 */ @Test public void testA() { // 获取数据并输出 Set<String> keys = jedis.keys("*"); Iterator<String> it = keys.iterator(); while (it.hasNext()) { String key = it.next(); System.out.println(key); } } @Test public void testBJJJ() { System.out.println("所有元素-stringlists:" + jedis.lrange("stringlists", 0, -1)); System.out.println("所有元素-numberlists:" + jedis.lrange("numberlists", 0, -1)); } /*** * AddTest.test */ @Test public void test() { // 获取存储的数据并输出 List<String> list = jedis.lrange("site-list", 0, 2); for (int i = 0; i < list.size(); i++) { System.out.println("列表项为: " + list.get(i)); } } /*** * AddTest.test2 */ @Test public void test1() { System.out.println( "一次性获取key201,key202,key203,key204各自对应的值:" + jedis.mget("key201", "key202", "key203", "key204")); } }
2.3:测试删除数据
package com.jachs.redis; import org.junit.Test; import redis.clients.jedis.Jedis; /*** * * @author zhanchaohan * */ public class DeleteTest { Jedis jedis = new RedisConfiger().init(); /** * 单条删除 */ @Test public void test() { String addStr = jedis.set("testDel", "AAAAA"); // Long del= jedis.del("testDel"); System.out.println(addStr + ":\t" + jedis.exists("testDel")); } /*** * AddTest.test2 * QueryTest.test1 */ @Test public void test1() { System.out.println("一次性删除key201,key202:" + jedis.del(new String[] { "key201", "key202" })); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)