• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
dielianhua
博客园    首页    新随笔    联系   管理    订阅  订阅

Redis知识要点

一、Redis简介

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

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

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

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

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

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下有几个可执行文件

 

 

 

4.启动Redis

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

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

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

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

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

2、后端启动

 Redis启动-后端模式

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

 

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

4.关闭Redis

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

 

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

5.Redis数据类型(重点)

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

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

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

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

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

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

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

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

 

赋值:(增,改)

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    返回值是数字类型,表示删了几条数据

 

扩展:

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 只能对字符串是数字的 进行操作。

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

 

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

取值:(查)

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

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

删除:(删)

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

del key :删除整个hash

 

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

 查询所有的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下面执行下面代码,就可以表示连接成功

 Jedis连接池

抽取连接池工具:JedisUtils

 

9.Redis常用命令(重点)

1、redis-LinkedList【重点】

Java List :  数组ArrayList  链表LinkedList

为什么redis选取了链表?

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

2、list常用命令:

①  两端添加(增)

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

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

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

② 两端删除(删)

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

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

rpop key:从尾部弹出元素。

 ③  查询元素(查)

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

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

 ④  一些其他命令

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

 

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

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

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

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

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

 

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

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

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

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

 

 

 

posted @ 2017-08-29 19:26  dielianhua  阅读(299)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3