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" }));
    }
}
复制代码

 

posted @   Jachs  阅读(70)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示
人生而自由,却无往不在枷锁中。