Redis的使用

一、为什么使用

解决应用服务器的cpu和内存压力

减少io的读操作,减轻io的压力

关系型数据库的扩展性不强,难以改变表结构

二、优点:

nosql数据库没有关联关系,数据结构简单,拓展表比较容易

nosql读取速度快,对较大数据处理快

三、适用场景:

数据高并发的读写

海量数据的读写

对扩展性要求高的数据

四、不适场景:

需要事务支持(非关系型数据库)

基于sql结构化查询储存,关系复杂

五、Redis结构:

Redis是一个开源的key—value型数据库,支持string、list、set、zset和hash类型数据。对这些数据的操作都是原子性的,redus为了保证效率会定期持久化数据。

六、使用场景:

配合关系型数据库做高速缓存

缓存高频次访问的数据,降低数据库io

分布式架构,做session共享

可以持久化特定数据。

利用zset类型可以存储排行榜

利用list的自然时间排序存储最新n个数据

A. 字符串
set name fx [存储一个key为name,value为fx的数据]
get name [获取一个key为nam的值,没有则返回nil]

B.哈希(Hash)
hmset student name “fuxing” age 23 height 168 weight “70kg” [ hmset key field1 value1 [field2 value2 ] ]

hset student sex “man” [在student中添加一个field-value 为 sex-“man”的键值]

C. 列表(List)
lpush fruit apple mongo [将值apple和mongo插入到列表头部
]
lrange fruit 0 -1 查看所有的数据【-1表示最后的一项】
lrem fruit -3 mango 【倒序遍历(负号),移除最多3个的值为mango的操作】

D. 集合(Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不*能出现重复的数据。*
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

sadd sql mysql oracle sqlserver db2 [向集合 sql 中添加mysql oracle sqlserver db2 4个值]
smembers sql【查看集合sql的所有值】
srem sql mysql oracle db2【移除集合sql中的一个或多个值】

E. 有序集合(sorted set)
Redis Zscore 命令返回有序集中,成员的分数值。 如果成员元素不是有序集 key -的成员,或 key 不存在,返回 nil 。

zadd computer 3 “apple” [computer集合中添加分数值为3值为apple]

zscore computer thinkpad [查看分数值]

zrange computer 0 10[查看0 到10 范围的值]

附上一小段java代码

 需要的jar包
 <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>2.9.0</version>
  </dependency>
package com.redis.demo;

import redis.clients.jedis.Jedis;

import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class Main {

    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());


        System.out.println("-------------------------------------------");


        //设置 redis 字符串数据
        jedis.set("age", "23");
        // 获取存储的数据并输出
        System.out.println("redis 存储的字符串为: "+ jedis.get("age"));


        System.out.println("-------------------------------------------");

        jedis.lpush("status","1");
        jedis.lpush("status","2");
        jedis.lpush("status","3");
        jedis.lpush("status","4");

        List<String> list = jedis.lrange("status",0,-1);
        for(String s :  list){
            System.out.println(s);
        }


        System.out.println("-------------------------------------------");


        // 获取数据并输出
        Set<String> keys = jedis.keys("*");
        Iterator<String> it = keys.iterator() ;
        while(it.hasNext()){
            String key = it.next();
            System.out.println(key);
        } 
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值