一、Redis介绍

1、介绍

  通常,在系统中,我们会把数据交由数据库来存储,但传统的数据库增删查改的性能较差,且比较复杂。根据 80/20 法则,百分之八十的业务访问集中在百分之二十的数据上。是否可以有一个存在于物理内存中的数据中间层,来缓存一些常用的数据,解决传统数据库数据读写性能问题。常用的数据都存储在内存中,读写性能非常可观。

  Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型的高性能的key-value数据库。它支持存储的value类型包括 string(字符串)、list(链表)、set(集合)、zset(sorted set有序集合)和 hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

2、redis 优势

  > redis数据库完全在内存中,使用磁盘仅用于持久性。不仅可用作缓存,更可为一种key-value存储,他完全可替代后端的存储服务,但需要做好备份。

  > Redis可以将数据复制到任意数量的从服务器。

  > Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。

  > 支持丰富的数据类型,Redis支持大多数开发人员已经知道的像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,因为我们知道哪些问题是可以通过它的数据类型处理更好。

  > 所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。

  > Redis是一个多功能实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅);任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数,热点排行等。就看什么样的业务场景以及你怎么去设计使用好它的数据结构。

二、Redis安装

1、Linux下安装

1、安装

首先可以从redis官网找一个稳定版下载:https://redis.io/download

# cd /usr/local

# wget http://download.redis.io/releases/redis-4.0.2.tar.gz

# tar zxf redis-4.0.2.tar.gz

# cd redis-4.0.2

# #直接make则安装到src目录下,可以通过如下方式安装到指定目录
# make PREFIX=/usr/local/redis install

安装完后,在/usr/local/redis/bin下可以看到如下文件,同时在redis-4.0.2/src/也是存在的。

各个文件如下:

redis-benchmark  Redis性能测试工具

redis-check-aof  检查aof日志工具

redis-check-rdb  检查rdb日志工具

redis-cli  连接用的客户端

redis-sentinel  Redis集群的管理工具 监控多个master-slave集群,发现master宕机后能进行自动切换

redis-server  Redis服务程序

启动服务:

# cd /usr/local/redis/bin

# ./redis-server

# #上面是以默认的配置启动服务,可以根据指定的配置文件启动服务
# #首先将配置文件复制到安装目录下
# cp /usr/local/src/redis-4.0.2/redis.conf /usr/local/redis/
# #指定配置文件启动
# ./redis-server ../redis-conf

这样就算安装成功了:默认端口可以看到使用的是6379.

会发现启动的redis一致占据着终端,修改redis.conf,让redis以后台进程的形式运行。

# vim redis.conf

# #修改 daemonize 为 yes 即可,然后重新启动,就不会占据终端了。

测试:./redis-cli 启动客户端

2、注册成服务  

将redis注册成系统服务,不然每次都要到安装目录下手动启动服务.

如果服务开着,首先把服务关掉:./redis-cli shutdown

首先将redis目录下的初始化脚本拷贝到/etc/rc.d/init.d目录,同时重命名为redis

# cp /usr/local/src/redis-4.0.2/utils/redis_init_script /etc/rc.d/init.d/redis

修改redis脚本

  a) 第二行增加如下内容:# chkconfig: 2345 80 90

  

  b) 原脚本EXEC和CLIEXEC的值改到安装目录下.

  

  c) 在$EXEC $CONF 后边加一个&,表示让redis作为后台服务启动,否则该服务会独占输入屏。

  

  d) 可以看到在/etc/init.d/redis文件中有这么一行:CONF="/etc/redis/${REDISPORT}.conf",启动时的默认配置文件为/etc/redis/6379.conf。于是将redis配置文件拷贝到/etc/redis/下,并命名为 6379.conf 。

  

# mkdir /etc/redis

# cp /usr/local/src/redis-4.0.2/redis.conf /etc/redis/6379.conf

  e) 至此修改完毕,注册服务

# chkconfig --add redis

  f) 启动服务和停止服务命令

# service redis start

# service redis stop

2、Windows下安装

1、安装

首先下载windows版redis:https://github.com/MicrosoftArchive/redis/releases

这里我下载解压版:

下载完成后,解压即可:可以看到如下文件.

redis-server.exe   Redis启动程序

redis.windows.conf  配置文件

通过如下命令启动:这样就代表启动成功。同样会一直占用着终端。

启动客户端进行测试:

2、注册成系统服务

redis-server.exe --service-install redis.windows.conf

3、Redis数据库

redis安装完成之后,可以使用图形化管理工具RedisDesktopManager,可以很方便的查看redis的所有数据。

通过管理工具我们可以看到redis的数据库:

redis默认有16个数据库,可以通过配置文件修改。

redis下,数据库是由一个整数索引标识,默认启用0数据库,通过select命令可以切换数据库。且每个数据库都有属于自己的空间,不必担心之间的key冲突。

* flushdb,清空当前数据库,flushall,清空所有数据库。

三、Redis通用key操作命令

redis有很多数据类型,如string、list、set、zset等等,这里先学习redis对于key的操作命令,再学习数据类型的操作。

首先插入几条数据:

1、 keys:查询key

可以使用模糊查询key,有三个通配符 *、?、[]。* 通配任意字符,? 通配单个字符,[] 通配某一个字符。

2、randomkey:随机取一个key

例如抽奖时可用于随机抽取一个人。

3、exists key:判断key是否存在,返回1/0

4、type key:判断key存储的值的类型

返回的类型可能有string、list、set、zset、hash等,但不包括int、boolean、long这种基本类型,其以字符串形式保存。

5、rename key newkey:重命名key

如果newkey 已经存在,则newkey的原值被覆盖

6、renamenx key newkey:重命名key

nx > not exists,即newkey不存在时才修改,发生修改时返回1,未发生修改返回0。

7、del key1 key2 ... keyn:删除key

不存在的key忽略,返回真正删除的key的数量

8、move key dbid:将key移动到dbid数据库

9、expire key seconds:设置key的生命周期,单位秒

pexpire key milliseconds:设置生命周期,单位毫秒。

redis的key默认是永久有效的。

10、ttl key:查询key的生命周期,返回秒数

pttl key:返回毫秒数。

对于不存在的key、已经过期的key返回-2;永久有效的key,返回-1。

11、expireat key timestamp:设置key的过期时间,timestamp为unix的时间戳

pexpireat key milliseconds-timestamp:unix时间为毫秒。

需要将过期的时间转为Unix时间戳。

12、persist key:把指定的key设为永久有效

可以将设置过期时间的key转为永久有效。

最后:

不要使用太长的键,例如,不要使用一个 1024 字节的键,不仅是因为内存占用,而且在数据集中查找键时需要多次耗时的键比较。

不要使用太短的键。用”u1000flw” 取代”user:1000:followers” 作为键并没有什么实际意义,后者更具有可读性,相对于键对象本身以及值对象来说,增加的空间微乎其微。

坚持一种模式 (schema)。例如,”object-type:id” 就不错,就像”user:1000”。点或者横线常用来连接多单词字段,如”comment:1234:reply.to”,或者”comment:1234:reply-to”。

键的最大大小是 512MB。

参考:http://wiki.jikexueyuan.com/project/redis-guide/


基础学习完,下一章学具体数据类型的操作!!!

Redis 学习(一) —— 安装、通用key操作命令的更多相关文章

  1. Redis 通用key操作命令

    1.在redis里面允许模糊查询key,有3个通配符:*,?,[]. *:通配任意字符 ?:通配单个字符 []:通配中括号内的某个字符 例如: 2.randomKey 随机返回所有key中的某个 3. ...

  2. Redis学习01_redis安装部署(centos)

    原文: http://www.cnblogs.com/herblog/p/9305668.html Redis学习(一):CentOS下redis安装和部署 1.基础知识  redis是用C语言开发的 ...

  3. Redis学习笔记-安装篇(Centos7)

    1.安装 这里使用源代码安装的方式,如果你希望使用yum或者rpm包安装的方式,可以百度一下,安装方法可谓多如牛毛. # 下载安装包 # wget http://download.redis.io/r ...

  4. Redis学习之一 安装

    一.简介 定义 Remote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C ...

  5. 2018-05-11-机器学习环境安装-I7-GTX960M-UBUNTU1804-CUDA90-CUDNN712-TF180-KERAS-GYM-ATARI-BOX2D

    layout: post title: 2018-05-11-机器学习环境安装-I7-GTX960M-UBUNTU1804-CUDA90-CUDNN712-TF180-KERAS-GYM-ATARI- ...

  6. Redis系列之key操作命令与Redis中的事务详解(六)

    序言 本篇主要目的有二: 1.展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力. 2.掌握redis中的事务,让你的数据完整性一致性拥有更优的保障. redis命 ...

  7. Redis学习笔记(2)——Redis的下载安装部署

    一.下载Redis Redis的官网下载页上有各种各样的版本,如图 但是官网下载的Redis项目不正式支持Windows.如果需要再windows系统上部署,要去GitHub上下载.我下载的是Redi ...

  8. redis学习 (key)键,Python操作redis 键 (二)

    # -*- coding: utf-8 -*- import redis #这个redis 连接不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. delete ...

  9. redis 学习(二)-- 通用命令

    redis 学习(二)-- 通用命令 1. keys pattern 含义:查找所有符合给定模式(pattern)的key 命令 含义 keys * 遍历所有 key keys he[h-l]* 遍历 ...

随机推荐

  1. VMware workstation 虚拟机中安装乌班图及其兼容性问题

    之前我在虚拟机中安装乌班图,是先安装好虚拟机,然后将预先下载好的乌班图镜像文件导入安装,这样安装起来还是有些繁琐的,中间要设置好多东西.今天领导给我拷了个虚拟机,还有乌班图的安装文件,是这样的. 对于 ...

  2. C#应用程序运行到linux【CentOS】

    具体的操作方法在linux.Net中.最近要部署网站在centOS,以及测试下小程序跑到上面.刚好实现了一番 说说C#应用程序如何跑到centOS.非常的简单. 1.准备工具“AnyExec”[工具在 ...

  3. 刚装上最新node,npm install报这个错误!求ndoe大神解答!!!

    npm -v和node-v都可以打印出来但是 npm install就报错! 解决方法:网络问题,建议使用cnpm install命令安装npm,再运行npm run dev 命令

  4. dedecms后台系统基本参数标题

    1,站点设置 2,核心设置 3,附件设置 4,会员设置 6,性能选项 7,其它选项 8,模块设置 在E:\wamp\www\dededln\back\inc\configgroup.txt

  5. ThinkPHP5上传图片并压缩为缩略图

    使用thinkphp开发app后端中,需要实现一个处理上传图片队列的功能 这是个上传多图片保存并且需要对其中一张图片进行压缩的功能 (使用的html5 mui框架开发app,如果直接载入原图,app客 ...

  6. async函数解析

    转载请注明出处:async函数解析 async函数是基于Generator函数实现的,也就是说是Generator函数的语法糖.在之前的文章有介绍过Generator函数语法和异步应用,如果对其不了解 ...

  7. Java Draw

    简单绘画 直线 矩形 圆 根据矩阵画图 package com.zhoudm; import java.awt.*; import javax.swing.*; public class Draw e ...

  8. java1.8--1.8入门介绍

    在我之前的工作中,一直使用的是java6.所以即使现在java已经到了1.8,对于1.7增加的新特性我也基本没使用的.在整理一系列1.8的新特性的过程中,我也会添加上1.7增加的特性. 下面的整理可能 ...

  9. linkin大话设计模式--模板方法模式

    linkin大话设计模式--模板方法模式 准备一个抽象类,将部分逻辑以具体方法的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不 ...

  10. SVN错误:Attempted to lock an already-locked dir的解决

    问题: SVN locked,文件被锁无法更新,SVN上更新代码失败,某些文件提示错误:Attempted to lock an already-locked dir 解决方法: 右键具体文件→Tea ...