Redis入门+语法

Redis介绍

什么是NoSql

为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方案,就是NoSql数据库。
NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充。

Nosql数据库分类

  1. 键值(Key-Value)存储数据库
    相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
    典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
    数据模型: 一系列键值对
    优势: 快速查询
    劣势: 存储的数据缺少结构化

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

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

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

Redis的应用场景

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

Redis安装配置

  1. Redis 下载
    官网地址:http://redis.io/
    下载地址:http://download.redis.io/releases/redis-3.0.0.tar.gz
    Windows版redis下载:github里搜索 redis-windows
    在Linux中使用wget下载到linux或者下载到window在上传到linux
wget http://download.redis.io/releases/redis-4.0.11.tar.gz

Redis 数据类型

Redis中存储数据是通过key-value存储的,对于value的类型有以下几种:

  • 字符串
  • Hash类型
  • List
  • Set
  • SortedSet(zset)
    各个数据类型最大存储量:
    Strings类型:一个String类型的value最大可以存储512M
    Lists类型:list的元素个数最多为2^32-1个,也就是4294967295个。
    Sets类型:元素个数最多为2^32-1个,也就是4294967295个。
    Hashes类型:键值对个数最多为2^32-1个,也就是4294967295个。
    Sorted sets类型:跟Sets类型相似。
    注意:
    设置redis.conf中的maxmemory选项,该选项是告诉Redis当使用了多少物理内存后就开始拒绝后续的写入请求,该参数能很好的保护好你的Redis不会因为使用了过多的物理内存而导致swap,最终严重影响性能甚至崩溃。
    PS:
    在redis中的命令语句中,命令是忽略大小写的,而key是不忽略大小写的。

String 类型

赋值:SET key value
取值:GET key
设置/获取多个键值:
在这里插入图片描述
取值并赋值:
在这里插入图片描述
删除:DEL key
数值增减:
在这里插入图片描述
在这里插入图片描述
其他命令:
向尾部追加值:
在这里插入图片描述
获取字符串长度
在这里插入图片描述

Hash 类型

使用string的问题
假设有User对象以JSON序列化的形式存储到Redis中,User对象有id,username、password、age、name等属性,存储的过程如下: 

保存、更新:
User对象 à json(string) à redis
如果在业务上只是更新age属性,其他的属性并不做更新我应该怎么做呢? 如果仍然采用上边的方法在传输、处理时会造成资源浪费,下边讲的hash可以很好的解决这个问题。

User “{“username”:”lisir”,”age”:”80”}”

赋值

HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。
在这里插入图片描述

取值

一次只能获取一个字段值
语法:HGET key field
在这里插入图片描述

删除字段

在这里插入图片描述

增加数字

在这里插入图片描述

List 类型

redis list 介绍

列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。
列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。

向列表两端添加元素

在这里插入图片描述

查看列表

LRANGE命令是列表类型最常用的命令之一,获取列表中的某一片段,将返回start、stop之间的所有元素(包含两端的元素),索引从0开始。索引可以是负数,如:“-1”代表最后边的一个元素。
在这里插入图片描述

从列表两端弹出元素

LPOP命令从列表左边弹出一个元素,会分两步完成:
第一步是将列表左边的元素从列表中移除
第二步是返回被移除的元素值。
在这里插入图片描述

获取列表中元素的个数

在这里插入图片描述

删除列表中指定的值

LREM命令会删除列表中前count个值为value的元素,返回实际删除的元素个数。根据count值的不同,该命令的执行方式会有所不同:

  • 当count>0时, LREM会从列表左边开始删除。
  • 当count<0时, LREM会从列表后边开始删除。
  • 当count=0时, LREM删除所有值为value的元素。
    在这里插入图片描述
向列表中插入元素

该命令首先会在列表中从左到右查找值为pivot的元素值,然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。
在这里插入图片描述

Set 类型

redis set 介绍

集合中的数据是不重复且没有顺序。
集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等,由于集合类型的Redis内部是使用值为空的散列表实现,所有这些操作的时间复杂度都为0(1)。
Redis还提供了多个集合之间的交集、并集、差集的运算。

增加/删除元素

在这里插入图片描述
在这里插入图片描述

获得集合中的所有元素

在这里插入图片描述

判断元素是否在集合中

在这里插入图片描述

集合的差集运算 A-B

在这里插入图片描述

集合的交集运算 A ∩ B

在这里插入图片描述

集合的并集运算 A ∪ B

属于A或者属于B的元素构成的集合
在这里插入图片描述

SortedSet类型zset

redis sorted set介绍

在集合类型的基础上,有序集合类型为集合中的每个元素都关联一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在在集合中,还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。

在某些方面有序集合和列表类型有些相似。
1、二者都是有序的。
2、二者都可以获得某一范围的元素。
但是,二者有着很大区别:
1、列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会变慢。
2、有序集合类型使用散列表实现,所有即使读取位于中间部分的数据也很快。
3、列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改分数实现)
4、有序集合要比列表类型更耗内存。

增加元素

向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。
在这里插入图片描述

获取元素的分数

在这里插入图片描述

删除元素

移除有序集key中的一个或多个成员,不存在的成员将被忽略。当key存在但不是有序集类型时,返回一个错误。
在这里插入图片描述
暂时就介绍这些吧,希望对自己有帮助

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值