Redis远程数据服务学习

Redis简介

关系型数据库  mssql mysql oracle sybase

非关系型数据库(大数据)redis  mongodb

 

Redis是Remote Dictionary Server(远程数据服务)的缩写,由意大利人antirez(Salvatore Sanfilippo)开发的一款内存高速缓存数据库

Redis还是一个开源的、基于Key-Value 键值对 方式的存储数据系统可以理解为key是列名,value是存入的值

它支持丰富的数据类型(结构),比如:String(字符串)、Hash(哈希)、List(列表)、Sets(集合)和Sorted Sets(有序集合)等类型。

可持久化(随时把数据备份到硬盘中),保证数据安全。

Redis也通常被称为数据结构服务器

 

官  网:http://www.redis.io

中文官网:http://www.redis.cn

数据缓存:

在Web开发的时候,如果有一些数据在短时间内不会发生变化,而它们还要被频繁的访问,为了提高用户的请求速度和降低网站的负载,就把这些数据放到一个读取速度更快的介质上(或者是通过较少的计算量就可以获得该数据),该行为就称作对该数据的缓存。

该介质可以是文件、数据库、内存。

内存介质经常用于数据缓存。

 

Redis缓存案例:

同一个select查询SQL语句,每天需要被执行查询100万次,并且每次查询获得的数据还是一样的。为了减轻数据库的负载,就把查询好的数据给缓存起来(存储在内存中),第一个用户执行Select查询时从数据库中获得数据并存储到内存中,第二个到第100万个用户查询就直接从内存中获得数据。

 

使用缓存减轻数据库的负载。数据库是整个网站资源的“瓶颈”。

 

 

缓存的两种形式:

(1)网页缓存经常用在CMS(Content Manage System)内容管理系统中(Smarty缓存)

不发生变化的新闻信息页面适合做“页面缓存”,每个用户就从一个静态页面访问该新闻即可。

 

(2)数据缓存经常会用在页面的具体数据中使用

京东网站的一个页面从业务上看,数据有分类(推广商品、商品精选、普通商品),这些商品从数据读取出来,为了降低数据库负载,可以给它们设置三个数据缓存,这样独立更新、独立读取。

 

Redis数据的基本操作(在客户端操作)

Redis存放的5种数据类型:

类型

说明

String

字符串

Hash

哈希

List

列表

Set

集合

Sorted Set

有序集合

命令方式操作5种数据类型:

命令

说明

案例

KEYS *

查看所有键

 

String 字符串

一般用于存储字符串数据。

命令

说明

案例

SET key value

设置指定 key 的值

SET uname "admin"

SET upwd "123"

GET key

获取指定 key 的值

GET uname

GETRANGE key start end

返回 key 中字符串值的子字符(截取)

GETRANGE uname 0 2

TYPE key

显示Key的类型

TYPE uname

Hash 哈希

一般用于存储对象。

命令

说明

案例

HMSET key field1 value1 field2 value2……

添加对象(key为对象名,field字段,value字段值)

HMSET user uname "admin" password "123" age 18

TYPE key

查看key(对象)类型

TYPE user

HGET key field

获取 key 中指定字段的值

HGET user uname

HGETALL key

获取指定 key 的所有字段和值

HGETALL user

HEXISTS key field

查看 key 中指定的字段是否存在

HEXISTS user age

HDEL key field1 [field2]

删除一个或多个哈希表字段

HDEL user uname age

HLEN key

获取 key 中字段的数量

HLEN user

List 链表

一般是简单的字符串列表,按照插入顺序排序。

链表是一种数据结构,我们学习过的LinkedList也是链表结构的一种。

链表分为很多种:单向链表、双向链表、循环链表、块状链表等等。

命令

说明

案例

LPUSH key value1 [value2]

将一个或多个值插入到列表头部(左侧)

LPUSH zking "admin"

LPUSH zking "abc" "abb" "abc"

RPUSH key value1 [value2]

将一个或多个值插入到列表尾部(右侧)

RPUSH zking "admin"

RPUSH zking "abc" "abb" "abc"

LPUSHX key value

将一个值插入到已存在列表的头部(左侧)

LPUSHX zking “left”

RPUSHX key value

将一个值插入到已存在列表的尾部(右侧)

RPUSHX zking “right”

LLEN key

获取列表长度

LLEN zking

LRANGE key start end

获取列表指定范围内的元素

LRANGE zking 0 2

LPOP key

移出并获取列表的第一个元素

LPOP zking

RPOP key

移除并获取列表最后一个元素

RPOP zking

Set 集合

集合是唯一字符串的无序集合。

唯一值表示集合中不允许键中有重复的数据。

命令

说明

案例

SADD key value1 [value2...]

向集合添加一个或多个成员。

重复数据不能插入

SADD course “java”

SADD course “sqlserver” “sql”

SSCAN key cursor [MATCH pattern] [COUNT count]

迭代集合中的元素

SSCAN couse 0 match s*

SCARD key

获取集合的成员数

SCARD course

SREM key value1 [value2...]

向集合删除一个或多个成员

SREM course “java”

SISMEMBER key value

判断 member 元素是否存在,是返回1,不是返回0

SISMEMBER course “java”

SMEMBERS key

返回集合中的所有成员

SMEMBERS course

SDIFF key [key1, key2 ...]

差集运算

属于key且不属于key1的元素构成的集合

SADD setA 1 2 3

SADD setB 2 3 4

SADD setC 1 2 5

SDIFF setA setB

SDIFF setA setB setC

SINTER key [key ...]

交集运算

SINTER setA setB

SINTER setA setB setC

SUNION key [key ...]

并集运算

SUNION setA setB

SUNION setA setB setC

Sorted Set 有序集合

实际上就是在集合类型上加了个有序而已。

有序集合比列表费内存。

命令

说明

案例

ZADD key score1 member1 [score2 member2]

向有序集合添加一个或多个成员,或者更新已存在成员的分数。

如果member存在,则score会覆盖原有的分数。

ZADD person 1 Tom

ZADD person 1 One 2 Two 3 Three

ZCARD key

获取有序集合的成员数

ZCARD person

ZCOUNT key min max

获得指定分数范围的元素个数

ZCARD person 1 3

使用Java代码实现Redis的CURD

修改redis.conf

……

#bind 127.0.0.1

……

protected-mode no

……

#bind 127.0.0.1注释掉该IP地址,表示允许网络访问。

注意:Redis默认只允许本机连接,网络访问不允许。因此注释掉该段代码,允许网络访问。

protected-mode no表示运行时报受保护异常。

重启redis:

$ ./redis-cli shutdown #关闭

$ ./redis-server reids.conf #重启启动

启动Linux中的redis

$ ./redis-server redis.conf

$ ./redis-cli

用Maven搭建项目

在pom.xml中引入Jedis依赖包

<!--引入redis依赖-->

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.9.0</version>

</dependency>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

发布了20 篇原创文章 · 获赞 4 · 访问量 8365

猜你喜欢

转载自blog.csdn.net/qq_41227463/article/details/82794280