redis介绍及相关操作

Redis介绍及相关操作

**概念:**redis是一款高性能的nosql(not only sql,意为’不仅仅是sql‘)系列的非关系型数据库。以键值对的形式存储数据,存储在内存中,也可以持久化到硬盘。

nosq和关系型数据库比较:

  • 优点:

    1. 成本:nosql数据库简单易部署,基本都是开源软件,不需要像oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
    2. 查询速度:nosql数据库将数据存储于缓存中,关系型数据库将数据存储在硬盘中,所以查询速度远不及nosql数据库。
    3. 存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基本数据类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
    4. 扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难
  • 缺点:

    1. 维护的工具和资料相对有限,因为nosql属于新的技术,不能和关系型数据库技术成熟度相比。
    2. 不提供对sql的支持,增加了学习成本。
    3. 不提供关系型数据库对事务的支持。
  • 总结:

    关系型数据库与nosql数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在是个使用nosql的时候使用nosq数据库,让nosql数据库对关系型数据库的不足进行弥补。

    一般会将数据存储在关系型数据库中,在nosql数据库中备份关系型数据库的数据。

使用场景:

  1. 缓存:缓存几乎是现在所有大中型网站都在用的必杀技,合理的利用缓存可以大大提高网站的访问速度,还能有降低服务器的压力。
  2. 排行榜:一般使用有序集合(sortedSet)进行。
  3. 计数器:比如某宝某件商品的浏览量,某音视频播放量。
  4. 社交网络:点赞、关注、共同好友是社交网站的基本功能,设计网站的访问量相对较大。Redis提供的哈希、集合等数据结构可以很好的实现这些功能。
  5. 最新列表:Redis列表结构,LPUSH可以在列表头部插入一个内容ID作为关键字,LTRIM可用来限制列表的数量,这样列表永远为N个ID,无需查询最新的列表,直接根据ID去到对应的内容页即可。
  6. 分布式集群架构中的session分离。
  7. 数据过期处理:比如短信验证码等。
  8. 楼主现在还未了解到的(●’◡’●)。

​ 比如:分布式锁、消息系统。

数据结构:

redis存储的是:key,value格式的数据,其中key都是字符串,value有5中不同的数据结构

  1. 字符串类型String
  2. 哈希类型hash:可以理解成Java中的map格式
  3. 列表类型list:可以理解成Java中的linkedlist格式
  4. 集合类型set:可以理解成Java中的hashset的格式
  5. 有序集合类型sortedset:会进行自动排序的hashset的格式。
    • 集合元素不允许存储重复元素

常用命令操作redis:

  1. 字符串类型String
    1. 存储:set key value
    2. 获取:get key
    3. 删除:del key
  2. 哈希类型hash:可以理解成Java中的map格式
    1. 存储:hset key fileld value
    2. 获取:hget key field
      • 获取全部:hgetall key
    3. 删除:hdel key field
  3. 列表类型list:可以理解成Java中的linkedlist格式
    1. 存储:lpush key value/rpush key value
      • 这个类型的数据可以看作是队列,lpush是从队列左边添加元素,rpush是从队列右边添加元素
    2. 获取:lrange key start end:范围获取,获取所有的话start:0,end:-1
    3. 删除:lpop key value/rpop key value
      • 删除的元素会返回到控制台
  4. 集合类型set:可以理解成Java中的hashset的格式
    1. 存储:sadd key value
    2. 获取:smembers key:获取集合中的所有元素
    3. 删除:srem key value:删除set集合中的某个元素
  5. 有序集合类型sortedset:会进行自动排序的hashset的格式。
    1. 存储:zadd key score value:存储数据及数据对应的分数、会根据分数进行排序
    2. 获取:zrange key start end
      • 获取带有分数:zrange key start end withscore
    3. 删除:zrem key value

通用命令

keys * :查询所有的键

type key:查询该key对应的value的数据类型

del key:删除指定的key和value

Redis持久化:

  1. redis是一个内存数据库,当redis重启或者电脑重启数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中、

  2. redis持久化机制:

    1. RDB:默认方式,不需要进行配置,默认就使用这种机制。(推荐)

      • 在一定的间隔时间中,检测key的变化情况,然后持久化数据。

      • 使用方法:在redis的目录中有redis.windows.conf文件中,找到

      • save 900 1
        save 300 10
        save 60 10000
        #redis默认配置
        #配置文件中第一个数字是秒数、第二个是更改的数量 
        #比如:第一个就是在900秒内,如果有一个key发生改变就持久化一次
        

        设置完成之后,需要加载配置文件运行

        命令行:切换到软件目录下

        redis-server.exe redis.windows.conf
        

        发生持久化,数据会存储在rdb结尾的文件里

    2. AOF:日志记录的方式,可以记录每一次命令的操作。可以在每一次命令操作后,持久化数据。

      • 使用方法:在redis的目录中找到redis.windows.conf文件,找到

      • appendonly no
        #no表示关闭AOF
        #改成yes就可以开启AOF持久化机制
        

        其中还可以指定AOF的持久化机制

        #appendfsnc always:每一次操作都进行持久化
        appendfync everysec:每隔一秒进行一次持久化
        #appendfync no:不进行持久化
        

        设置完成之后,需要加载配置文件运行

        命令行:切换到软件目录下

        redis-server.exe redis.windows.conf
        

        发生持久化,数据会存储在aof结尾的文件里

redis数据库不保证数据的绝对安全,不丢失

如果想要使用java语言来操作redis数据库,只需要添加redis的jar包,新建redis对象就可以进行操作,具体方法的名称与命令相同,操作完成之后别忘记关闭redis哟。

关注我,下期更新redis的连接池。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值