Redis简介

40be8305c6584a7291df10a2999b4d31.jpgRedis是基于内存,也可以基于磁盘持久化nosql数据库,使用c语言开发。

 

 

数据存储结构:key-value

 

安装环境准备

Redis使用c语言开发,需要使用gcc编译程序进行编译。

 

1) 安装gcc

 

a) 从磁盘镜像中进行安装:(重启Linux服务器需要重新挂载磁盘镜像)

 

b) 使用yum命令直接从mine.repo文件中本地URL下载

 

c) 挂载命令:mount /dev/cdrom /mnt

 

d) 安装命令:yum -y install gcc

 

2) 安装上传文件插件

 

a) 工具上传文件:(只能上传root目录)

 

b) Alt+P上传文件默认只能上传root目录

 

c) 安装插件:(可以把文件上传任意目录)

 

Rz(lrzsz)

安装命令:yum –y install lrzsz (磁盘镜像中直接安装)

安装redis

上传安装包

使用rz命令上传redis安装包,到/usr/local/hadoop目录下:

 

[root@localhost hadoop]# ll

 

total 144964

 

drwxr-xr-x. 9 root root 4096 Jul 13 01:37 apache-tomcat-7.0.61

 

-rw-r--r--. 1 root root 8816567 May 5 2015 apache-tomcat-7.0.61.tar.gz

 

drwxr-xr-x. 8 uucp 143 4096 Oct 8 2013 jdk1.7.0_45

 

-rw-r--r--. 1 root root 138094686 Jul 13 01:28 jdk-7u45-linux-x64.tar.gz

 

-rw-r--r--. 1 root root 1358081 May 14 2015 redis-3.0.0.tar.gz

 

解压

解压命令:tar -zxvf redis-3.0.0.tar.gz

 

安装redis

1) 编译

 

a) 命令:make

 

b) 进入redis解压目录:执行编译命令。

 

c) 执行编译程序:生成编译文件在src目录下

 

2) 安装

 

a) 命令:make install PREFIX=/usr/local/hadoop/redis

 

b) 进入redis解压目录:执行安装命令

 

[root@localhost redis-3.0.0]# make install PREFIX=/usr/local/hadoop/redis

 

cd src && make install

 

make[1]: Entering directory `/usr/local/hadoop/redis-3.0.0/src'

 

 

 

Hint: It's a good idea to run 'make test' ;)

 

 

 

    INSTALL install

 

    INSTALL install

 

    INSTALL install

 

    INSTALL install

 

    INSTALL install

 

make[1]: Leaving directory `/usr/local/hadoop/redis-3.0.0/src'

 

启动redis服务

 前台启动

启动命令:./redis-server

 

特点:默认启动前台服务,进程一种阻塞,不能直接退出,使用客户端进行登录。

 

 

 

 

 

后台启动

修改redis配置文件,redis.conf配置文件,此时bin安装目录没有配置文件,需要从解压目录中拷贝一份配置文件即可。

 

1) 拷贝redis.conf配置文件

 

a) redis.conf在redis解压目录中

 

b) 拷贝:cp redis.conf ../redis/bin/

 

[root@localhost bin]# ll

 

total 15520

 

-rw-r--r--. 1 root root 18 Jul 26 17:14 dump.rdb

 

-rwxr-xr-x. 1 root root 4587078 Jul 26 17:09 redis-benchmark

 

-rwxr-xr-x. 1 root root 22185 Jul 26 17:09 redis-check-aof

 

-rwxr-xr-x. 1 root root 45403 Jul 26 17:09 redis-check-dump

 

-rwxr-xr-x. 1 root root 4689993 Jul 26 17:09 redis-cli

 

-rw-r--r--. 1 root root 41403 Jul 26 17:16 redis.conf

 

lrwxrwxrwx. 1 root root 12 Jul 26 17:09 redis-sentinel -> redis-server

 

-rwxr-xr-x. 1 root root 6448257 Jul 26 17:09 redis-server

 

 

 

2) 修改redis配置文件

 

a) daemonize no==daemonize yes

 

 

 

3) 启动redis,加载配置文件

 

a) 命令:./redis-server redis.conf

 

4) 登录redis

 

a) 登录命令:./redis-cli –h ip –p port

 

b) 登录:./redis-cli (默认登录6379端口redis服务)

 

 Redis命令

redis是一种高级的key:value存储系统,其中value支持五种数据类型:

 

1.字符串(strings)

 

2.字符串列表(lists)

 

3.字符串集合(sets)

 

4.有序字符串集合(sorted sets)

 

5.哈希(hashes)

 

而关于key,有几个点要提醒大家:

 

1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;

 

2.key也不要太短,太短的话,key的可读性会降低;

 

3.在一个项目中,key最好使用统一的命名模式,例如user:10000:passwd。

 

 

 

Strings

Redis存储结构是key:value,value是 strings数据类型。

 

命令:

 

语法:set key value

 

1) set name zhangsanfeng

 

a) 给Strings类型key是name 添加一个值。

 

2) get name

 

a) 获取key是name属性的值。

 

3) incr age

 

a) 给数字字符类型自动加1

 

b) 把数字字符类型自动转换成integer类型,然后执行再加上1

 

4) decr age

 

a) 给数字字符类型自动减1

 

b) 把数字字符类型自动转换成integer类型,然后执行减去1

 

5) incrby age 10

 

a) 给指定键值加速10

 

6) decrby age 10

 

a) 给指定键值减去10

 

Hash

Hash是集合类型,适合于用来存储对象。Java集合类型是用来存储对象。

 

存储数据结构分析:

 

第一种数据结构:

 

 

 

存取对象,使用一个key,使用一个key获取一个对象,必须使用反序列化。

 

缺点:

 

占用IO资源。

 

第二种数据结构:

 

 

 

缺点:

 

用户ID被多次使用,数据冗余。资源浪费。

 

第三种数据结构:

 

 

 

Redis存储结构:key是用户ID value:就是hash类型数据。

 

命令:

 

1) hset user username zhaowuji

 

a) 给user中Username属性设置一个值

 

2) hget user username

 

a) 获取User中Username属性的值

 

3) hdel user password …..

 

a) 删除User中属性

 

4) hsetnx user email 123@qq.com

 

a) 如果user中email属性值已经存在,不会覆盖

 

b) 如果不存在,设置值。

 

5) hmset user password 123 age 11

 

a) 同时设置多个值

 

6) Hmget user username age password

 

Lists

List集合数据结构:类似数组,数据是顺序存储。

 

List集合链表结构:通过指针从头指针查询到尾指针查找元素。

 

 

 

命令:

 

 

 

1) lpush mylist a b c d

 

 

 

a) 给list类型数据结构设置多个值

 

 

 

2) lrange mylist 0 -1

 

 

 

a) 获取mylist集合中所有值

 

 

 

b) 0:值链表开始位置

 

 

 

c) -1:链表的结束位置

 

 

 

3) lpop mylist

 

 

 

a) 出栈集合mylist:出栈链表头指针元素。

 

 

 

4) lrem mylist 3 a

 

 

 

a) 删除链表mylist中前3个等于a的值。

 

 

 

5) lset mylist 2 s

 

 

 

a) 给链表mylist集合中2角标位置设置一个值,覆盖原值。

 

 

 

6) linsert mylist after s b

 

 

 

a) 在集合链表mylsit中s元素后面插入一个b

 

 

 

Set

 

 

命令:

 

 

 

1) sadd myset a b c

 

 

 

a) 给set集合myset设置值:a b c

 

 

 

b) Set集合元素值不允许重复

 

 

 

2) smembers myset

 

 

 

a) 获取集合myset中值

 

 

 

3) srem myset a b

 

 

 

a) 删除集合myset中元素

 

 

 

4) smove myset myset1 c

 

 

 

a) 把集合myset中的元素c移动到集合myset1中

 

 

 

 Sorted set

 

 

Set集合:有序集合。

 

 

 

 给set集合中每一元素都设置一个得分,根据得分排序。

 

 

 

 Set集合元素不允许重复,得分可以重复。

 

 

 

设置得分语法:ZADD key score member [score] [member]

 

 

 

命令:

 

 

 

1) zadd mysset 1 one 2 two 12 three 9 four 10 five

 

 

 

a) 给集合mysset集合添加5个元素,每一个元素都设置一个得分。

 

 

 

2) zcount mysset 1 10

 

 

 

a) 获取分数1到10的元素个数,默认是闭区间。

 

 

 

3) zcount mysset (1 10

 

 

 

a) 获取分数1到10的元素个数,左边是开区间(不包含1元素)

 

 

 

4) zcount mysset -inf +inf

 

 

 

a) 获取所有元素

 

 

 

b) –inf:最低值

 

 

 

c) +inf:最高值

 

 

 

5) zrange mysset 0 -1 withscores

 

 

 

a) 获取集合mysset中所有元素

 

 

 

b) 0:头部元素

 

 

 

c) -1表示尾部元素

 

 

 

d) Withscores:查询元素时候,把分数查询出来

 

 

 

6) zrangebyscore mysset 1 10 withscores limit 2 2

 

 

 

a) 根据分数大小来获取元素:

 

 

 

b) Limit分页获取值。

 

 

 

多数据库实例

 

 

Redis支持16个数据库实例,数据库实例角标从0—15,使用redis客户端登录redis服务器,默认登录0号数据库。

 

 

 

登录其他数据库实例:

 

 

 

登录语法:select 数据库实例ID(角标)

 

 

 

登录1号数据库:

 

 

 

127.0.0.1:6379> select 1

 

 

 

OK

 

 

 

127.0.0.1:6379[1]>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/4533.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结合ace编辑器实现MapboxGL热力图样式在线配置

概述 MapboxGL热力图的配置参数并不多,但是有时候为了或得一个比较好用的热力图配置参数,我们不得不改代码再预览,显得尤为麻烦,为方便配置,实现实时预览,本文使用ace实现了一个热力图样式在线配置页面。 …

MapReduce分布式计算(二)

MapReduce工作流程 原始数据File 1T数据被切分成块存放在HDFS上,每一个块有128M大小 数据块Block hdfs上数据存储的一个单元,同一个文件中块的大小都是相同的 因为数据存储到HDFS上不可变,所以有可能块的数量和集群的计算能力不匹配 我们需要一个动态…

Java面试题3

[TOC]目录 1. spring事务 事务简介 事务在逻辑上是一组操作,要么执行,要不都不执行。主要是针对数据库而言的,比如说 MySQL。 为了保证事务是正确可靠的,在数据库进行写入或者更新操作时,就必须得表现出 ACID 的 4 …

ESP8266-NodeMCU搭建Arduino IDE开发环境

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、准备工作二、搭建步骤1.打开Arduino IDE 首选项2.打开Arduino IDE的“开发板管理器”3.在Arduino IDE的开发板菜单中找到“NodeMCU开发板”4.设置Arduino IDE的…

mongodb原理

一:MongoDB的优点和缺点 优点 面向文档存储(类JSON数据模式简单而强大)动态查询全索引支持,扩展到内部对象和内嵌数组查询记录分析快速,就地更新高效存储二进制大对象 (比如照片和视频)复制和故障切换支持Auto- Sharding自动分片支持云级扩展性MapReduce 支持复杂…

Redis:redis基于各大实战场景下的基本使用

文章目录 前言String 命令实战1.业务缓存对应redis中的指令伪代码 2.分布式锁对应redis中的指令伪代码 3.限流对应redis中的指令伪代码 List 命令实战1.提醒功能对应Redis中的指令伪代码 2.热点列表对应Redis中的指令伪代码 Hash 命令实战1.用户资料缓存对应redis中的指令伪代码…

Qt实现拖拽功能(支持拖放文件、拖放操作)

目录 拖放Qt程序接受其他程序的拖拽部件/控件之间相互拖放总结 拖放 拖放是在一个应用程序内或者多个应用程序之间传递信息的一种直观的现代操作方式。除了为剪贴板提供支持外,通常它还提供数据移动和复制的功能。 拖放操作包括两个截然不同的动作:拖动和放下。Qt窗口部件可以…

MATLAB 之 Simulink 子系统及其封装

这里写目录标题 一、子系统及其封装1. 子系统的创建1.1 通过 Subsystem 模块建立子系统1.2 通过已有的模块建立子系统 2. 子系统的条件执行2.1 使能子系统2.2 触发子系统2.3 使能加触发子系统 3. 子系统的封装3.1 lcon & Ports 选项卡的参数设置3.2 Parameters & Dialo…

控制请求来源的HTML Meta标签 - Referrer详解

83. 控制请求来源的HTML Meta标签 - Referrer详解 在Web开发中&#xff0c;为了保护用户的隐私和安全&#xff0c;控制请求的来源信息是至关重要的。HTML中的<meta>标签提供了一种简单而有效的方式来控制请求的来源&#xff0c;其中包括Referrer&#xff08;引荐者&…

SpringMVC原理分析 | Controller配置、RestFul风格

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Controller配置 控制器Controller 控制器复杂提供访问应用程序的行为&#xff0c;通常通过接口定义或注释定义的两种方法实现控制器负责解析用户的请求并将其转换为一…

SpringBoot整合定时任务技术Quartz

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ RequestMapping注解 &#x1f680;Quartz应用场…

在教育领域中使用ChatGPT有哪些优点?

人工智能在教育领域的应用正在迅速增加。OpenAI于2022年11月开发的聊天机器人ChatGPT在全球范围内广受欢迎。 由于其受欢迎程度以及生成类似人类问题的回答的能力&#xff0c;ChatGPT正在成为许多学习者和教育工作者值得信赖的伴侣。然而&#xff0c;与任何新兴技术一样&#x…