Redis知识要点

一、Redis简介

1.关于关系型数据库和nosql(非关系型)数据库

关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据 库是基于特殊的结构,并将数据存储到内存的数据库。

从性能上而言,nosql数据库 要优于关系型数据库,从安全性上而言关系型数据库要优于nosql数据库,

所以在实 际开发中一个项目中nosql和关系型数据库会一起使用,达到性能和安全性的双保证。

2.关系型数据库与nosql数据库的优缺点比较

Redis知识要点_第1张图片

3.在Linux下安装Redis

下载Redis安装包链接:https://redis.io/download    

安装过程根据自己的Linux版本系统来,不一样的系统可能有些指令不一样

大致步骤:由于Redis是C语言开发的,所以需要在Linux下安装C、C++环境

我的Linux命令为: yum -y install gcc-c++

然后将上面的压缩包通过ScureCRT进行上传,上传成功后将其进行解压

Linux指令:tar -zxvf redis-3.0.0.tar.gz

进入解压文件夹:cd redis-3.0.0

执行 make MALLOC=libc 
安装成功后,执行 make PREFIX=/usr/local/redis install

安装完后,在/usr/local/redis/bin下有几个可执行文件

 Redis知识要点_第2张图片

 Redis知识要点_第3张图片

 Redis知识要点_第4张图片

4.启动Redis

 1、前端启动:(了解)-无法部署集群

Redis知识要点_第5张图片

这时会进入另一个命令窗口,执行图中操作,表明连接本地成功

Redis知识要点_第6张图片

启动redis,客户端连接: 连接6379端口

点击Crtl+C,结束该连接,敲入图中命令,表明连接成功

Redis知识要点_第7张图片

运行客户端(默认连接本机6379端口):./bin/redis-cli,如以后要连接外网则为:redis-cli -h ip地址 -p 端口

2、后端启动

 Redis启动-后端模式

修改redis.conf配置文件, daemonize yes 以后端模式启动。

 Redis知识要点_第8张图片

然后按住Crtl+C,结束编辑,敲 :wq 进行保存,启动时,指定配置文件

Redis知识要点_第9张图片

4.关闭Redis

①   查询到PID,kill -9 pid  【断电,非正常关闭,一般不用,否则造成数据丢失】

 Redis知识要点_第10张图片

②   正常关闭  【正常关闭,数据保存】

5.Redis数据类型(重点)

redis 使用的是键值对 保存数据。(map)

key:全部都是字符串      value:有五种数据类型

Redis知识要点_第11张图片

注:Key名:自定义,key名不要过长,否则影响使用效率,不过实际情况差不多,Key名不要太短,最好是有意义。

6.Redis命令--String命令(重点)

字符串类型是Redis中最为基础、常用的数据存储类型,字符串在Redis中是二进制安全的,这便意味着该类型存入和获取的数据相同。

在Redis中字符串类型的Value最多可以容纳的数据长度是512M。

二进制安全和数据安全是没有关系的。

MySQL-关系型数据库,二进制不安全。【乱码丢失数据】

 Redis知识要点_第12张图片

Redis知识要点_第13张图片

赋值:(增,改)

set key value设定key持有指定的字符串value,如果该key存在则进行覆盖操作。总是返回”OK”

                           如果赋予相同的key,新的value会覆盖老的value

取值:(查)

get key获取key的value。如果与该key关联的value不是String类型,redis将返回错误信息,

因为get命令只能用于获取String value;如果该key不存在,返回(nil)

删除:(删)

del key删除指定key    返回值是数字类型,表示删了几条数据

 Redis知识要点_第14张图片

扩展:

getset key value:先获取该key的值,然后在设置该key的值。

incr key:将指定的key的value原子性的递增1.如果该key不存在,其初始值为0,在incr之后其值为1。

如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息。 相当于 ++i

decr key将指定的key的value原子性的递减1.如果该key不存在,其初始值为0,在incr之后其值为-1。

如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息。   相当于 --i

Incr和decr 只能对字符串是数字的 进行操作。

Redis知识要点_第15张图片

Redis知识要点_第16张图片

append key value拼凑字符串。如果该key存在,则在原有的value后追加该值;如果该key不存在,则重新创建一个key/value。

 Redis知识要点_第17张图片

String使用环境:主要用于保存json格式的字符串

7.Redis命令--hash命令(了解)

Redis中的Hash类型可以看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。

如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。

每一个Hash可以存储4294967295个键值对。

Hash  ----à   {username:”张三”,age:”18”,sex:”man”}------javaBean

Hash特点:占用的磁盘空间极少

赋值:(增,改)

hset key field value:为指定的key设定field/value对(键值对)。

hmset key field value [field2 value2 …]:设置key中的多个filed/value

Redis知识要点_第18张图片

Redis知识要点_第19张图片

取值:(查)

hmget key filed1 filed2 ….:获取key中的多个filed的值

hgetall key:获取key中的所有filed-vaule

Redis知识要点_第20张图片

删除:(删)

hdel key field1 field2....:删除key中的多个filed的值

del key :删除整个hash

 Redis知识要点_第21张图片

 一些简单命令:hexists、hlen、hkeys、hvals

Redis知识要点_第22张图片

 查询所有的key:key *

8.Jedis(Java操作Redis数据库技术)(重点)

该技术相当于JDBC的功能,有一个Jedis连接池,还有Redis有什么命令,Jedis就有什么方法。

防火墙设置:想从Linux系统获取Redis的操作需要将其防火墙端口打开,否则会显示超时

要使用该技术,需要在Eclipse下面导入相应的jar包

开放6379端口

/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT

保存配置

/etc/rc.d/init.d/iptables save

 注:有些Linux该目录下没有iptables文件,可以去Linux系统里面直接开启6379端口

 开启之后,在Eclipse下面执行下面代码,就可以表示连接成功

Redis知识要点_第23张图片

 Jedis连接池

Redis知识要点_第24张图片

抽取连接池工具:JedisUtils

 Redis知识要点_第25张图片

9.Redis常用命令(重点)

1、redis-LinkedList【重点】

Java List :  数组ArrayList  链表LinkedList

Redis知识要点_第26张图片

为什么redis选取了链表?

Redis操作中,最多的操作是进行元素的增删

2、list常用命令:

①  两端添加(增)

头部添加---》lpush key values[value1 value2…]在指定的key所关联的list的头部插入所有的values,

如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数。

尾部添加---》rpush key values[value1、value2…]在该list的尾部添加元素。

Redis知识要点_第27张图片

② 两端删除(删)

lpop key:返回并弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;

若key存在,则返回链表的头部元素。

rpop key:从尾部弹出元素。

Redis知识要点_第28张图片

 ③  查询元素(查)

 lrange key start end:获取链表中从start到end的元素的值,start、end从0开始计数;也可为负数,

若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推…

Redis知识要点_第29张图片

 ④  一些其他命令

 1、获取链表中元素的个数:llen key

 

 2、lpushx key value:仅当参数中指定的key存在时,向关联的list的头部插入value,如果不存在,将不进行插入

Redis知识要点_第30张图片

3、rpushx key value:在该list的尾部添加元素

Redis知识要点_第31张图片

4、删除某种元素---》lrem key count value(一般不用,效率低):删除count个值为value的元素,

     如果count大于0,从头向尾遍历并删除count个值为value的元素;

     如果count小于0,则从从尾向头遍历并删除;如果count等于0,则删除表中所有等于value的元素。

 Redis知识要点_第32张图片

5、设置某个元素的值---》lset key index value(一般不用,效率不高):设置链表中index的脚标的元素值,

     0代表链表的头元素,-1代表链表的尾元素。操作链表的脚标不存在则抛出异常。

Redis知识要点_第33张图片

6、插入某个元素的值---》linsert key before/after pivot value:在pivot元素前或者后插入value这个元素。

Redis知识要点_第34张图片

 7、rpoplpush resource destination:将链表中的尾部元素弹出并添加到头部。[循环操作]

 

 

 

转载于:https://www.cnblogs.com/xiaoxiaoyisheng/p/7449908.html

你可能感兴趣的:(Redis知识要点)