Redis入门

博客介绍了不同类型数据库及其适用场景,包括关系型(如Oracle、MySQL)、文档性(MongoDB)、KV型(Redis)、全文搜索(ElasticSearch等)和分布式(HBASE等)。还提及了键值对操作,如设置、取值、批量操作等,以及部分调试命令。

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

数据库多样性

类型:

访问模式决定采用哪种数据库,同步的问题

关系型:Oracle MySQL ...,实时事务处理
文档性:MongoDB,适合高聚合的数据结构
KV型:Redis,高速存放和查找,中间缓存
全文搜索:ElasticSearch Solor,输入关键词,不仅仅是String.contains,分词...
分布式:HBASE 大数据Hadoop HDFS

-------------------------------------------

Map<K, V>
K key
V value

map.put(k, v)
map.get(k)

------------------------------------------

设置键值对
set k v
取值
get k
一次多个键,multiple
mset k1 v1 k2 v2 ...
mget k1 k2 ...

调试命令:
查找符合pattern的所有key,*表示任意字符串
keys pattern

指定有效期
TTL; time to live

设置键值对并指定有效期,单位秒
setex k ex v

将指定键的值+1
incr k
将指定键的值-1
decr k

删除键值对
del k

 

  pom.xml

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>

  ArticleService.java

package redistest;

import java.util.List;

import redis.clients.jedis.Jedis;

public class ArticleService {

    private Jedis jedis = new Jedis("localhost");
    
    public void add(long id, String title) {
        String key = titleKey(id); // article:1:title
        jedis.set(key, title);
    }

    private String titleKey(long id) {
        return "article:" + id + ":title";
    }
    
    public void upVote(long id) {
//        incr article:2:upvotes        
        jedis.incr(upvotesKey(id));
    }

    private String upvotesKey(long id) {
        return "article:" + id + ":upvotes";
    }

    public void downVote(long id) {
//        incr article:2:downvotes        
        jedis.incr(downvotesKey(id));
    }

    private String downvotesKey(long id) {
        return "article:" + id + ":downvotes";
    }

    public String info(long id) {
        List<String> values = jedis.mget(titleKey(id), 
                upvotesKey(id), downvotesKey(id));
        String title = values.get(0);
        String upvotes = values.get(1);
        String downvotes = values.get(2);
        
        return title + "#" + id + "[" + upvotes + ", " + downvotes + "]";
    }
}
ArticleServiceTest.java
package redistest;

public class ArticleServiceTest {
    public static void main(String[] args) {
        ArticleService service = new ArticleService();
        service.add(1L, "标题1");
        service.add(2L, "标题2");
        service.add(3L, "标题3");
        
//        for (int i = 0; i < 100; i++) {
//            service.upVote(2L);
//        }
        
        service.downVote(3L);
        
        System.out.println(service.info(1));
        System.out.println(service.info(2));
        System.out.println(service.info(3));
    }
}

 

转载于:https://www.cnblogs.com/wlxslsb/p/10899345.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值