Redis个人总结及代码实现

本文介绍了Redis这个高性能的键值对数据库,详细讲解了Redis的数据类型如字符串、散列、列表和有序集合,并探讨了其在缓存、分布式集群、消息队列等场景的应用。还阐述了Redis的持久化机制、集群模式以及安装与启动过程,同时通过Java客户端Jedis展示了API的代码实现。

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

了解:
什么是NoSQL??
为了解决高并发,高可扩展,高可用,大数据存储问题而产生的数据库解决方案,就是NoSQL数据库
NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充;但是它不能替代关系型数据库,而且它是存储在内存中,所以它的访问速度很快

NoSQL的数据库分类:

  1.键值(key-value)存储数据库(Redis)
     典型应用:内容缓存,主要用于处理大量数据的高访问负载
     数据模型: 一系列键值对
     优势:快速查询
     劣势:存储的数据缺少结构化

  2.列存储数据库(HBase)
     典型应用:分布式的文件系统
     数据模型:以列族式存储,将同一列数据存在文件系统中
     优势:查找速度快,可扩展性强,更容易进行分布式扩展
     劣势:功能相对局限

  3.文档型数据库(MongoDB)
      典型应用:web应用(与key-value类似,value是结构化的)
      数据模型:一系列键值对
      优势:数据结构要求不严格
      劣势:查询性能不高,而且缺乏统一的查询语法

   4.图形(Graph)数据库[InfoGrid]
      典型应用:社交网络
      数据模型:图结构
      优势:利用图结构相关算法
      劣势:需要对整个图做计算才能得到结果,不容易做分布式的集群方案

Redis介绍
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库.它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:
字符串类型; 散列类型; 列表类型; 集合类型; 有序集合类型

Redis应用场景
缓存(数据查询,短连接,新闻内容,商品内容等等)
分布式集群架构中的session分离
聊天室的在线好友列表
任务队列(秒杀,抢购,12306等等)
应用排行榜
网站访问统计
数据过期处理(可以精确到毫秒)

Redis的特性
1.redis数据访问速度快(数据在内存中)
2.redis有数据持久化机制
持久化机制有两种:
1.定期将内存数据dump到磁盘;
2.aof(append only file)持久化机制–用记日志的方式记录每一条数据更新操作,一旦出现灾难事件,可以通过日志重放来恢复整个数据库
3.redis支持集群模式(容量可以线性扩展)
4.redis相比其他缓存工具(encach/memcached),有一个鲜明的优势:支持丰富的数据结构

Redis安装:
官网:http://redis.io/

第一步:在VMware中安装CentOS系统(Linux)
第二步:在Linuex系统中安装C语言环境
yum install gcc-c++
第三步:将redis的源码包上传到Linux系统
第四步:解压源码包
第五步:进入redis-3.3.3包,然后执行make命令,编译redis的源码
cd /usr/local/redis-3.0.0
make
第六步:安装
make install PREFIX=/usr/local/redis

Redis启动
前端启动,如果客户端关掉或者执行ctrl+c命令;则整个redis服务也停掉
[root@redis01 bin]# ./redis-server
关闭:ctrl+c
后端启动:
第一步:执行cp命令将redis解压缩包中的redis.conf文件拷贝到bin目录下
第二步:修改redis.conf文件
daemonize yes [将no改为yes即可后端启动]
第三步:启动redis服务
bin : ./redis-server redis.conf
ps -ef | grep redis.conf
关闭:
正常关闭: bin: ./redis-cli shutdown
非正常关闭 kill 线程号

Redis客户端
Redis自带的客户端:
bin: ./redis-cli -h 127.0.0.1 -p 6379 [实时使用默认的ip为127.0.0.1 默认的端口为6379]
set s1 redis1
get s1

Redis数据类型:
String 类型
set str1 dance
get str1
del str1
自增[默认+1]: set s1 1 // incr s1
自减[默认-1]: decr s1
自增指定数值: incrby s1 3 => s1+3
自减指定数值: decrby s1 3 => s1-3
设置或者获取多个key/value:
mset name dance age 18
mget name age => dance 18

API代码实现中:
Java客户端jedis
jedis介绍(jave + redis)

 1.将对象缓存到String数据结构中
   需要注意:
      1.将对象序列化成byte数组
      2.用对象序列化的方式将pro实例序列化并(读出)写入
      3.将ByteArrayOutputStream转换成字节数组
      4.将序列化后的对象缓存到string数据结构中
      5.获取数据(getByte())
      6.将获取的数据反序列化  ByteArrayInputStream     ObjectInputStream
      7.读取对象流中的ProduceInfo对象

 2.将对象转换成json格式的字符串缓存到String数据结构中
   需要注意:
      1.把对象转换成json格式    Gson  gson  = new Gson();    String  json  = gson.toJson(pro)
      2.将json字符串缓存到Redis
      3.获取数据
      4.将json字符串转换成对象:ProductInfo  proInfo  =  gson.fromJson(jsonRes,ProductInfo.class);
   package myRPC.qf.itcast.redis.stringdemo;


import com.google.gson.Gson;
import redis.clients.jedis.Jedis;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class StringDemo2 {
    private  static Jedis jedis = new Jedis("192.168.222.156",6379);

    //将字符串缓存到String数据结构中
    public static void stringTest(){
        jedis.set("user:001:name1","dance");
        jedis.set("user:002:name1","G-Dragon");
        jedis.set("user:003:name1","xiaoming");
        jedis.set("user:004:name1","xiaofang&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值