Redis初探
Redis如今已经成为Web开发社区中最火热的内存数据库之一,而他的诞生距离现在不过才6年的时间,随着Web2.0的蓬勃发展,网站数据快速增长,对高性能读写的需求也越来越多,再加上半结构化的数据比重逐渐变大,人们对早已被普天盖地的运用着的关系数据库能否适应现金的存储的需求产生了疑问。而Redis的迅猛发展,为这个领域注入的全新的思维。
Redis凭借其全面的功能得到越来越多的公司的青睐,从初创企业到新浪微博这样拥有着几百台Redis服务器的大公司,都能看到Redis的身影。Redis也是一个名副其实的多面手,无论是存储、队列还是缓存系统,都有他的用武之地。
1,Redis简介
Redis是一个开源的高性能的键值对数据库。它通过提供多种键值对数据类型来适应不同场景下的存储需求,并且借助许多高层级的接口使其可以胜任,如缓存、队列系统的不同角色
2,Redis的特性
@多种数据类型存储
- 字符串类型
- 散列类型
- 列表类型
- 集合类型
- 有序集合类型
@内存存储与持久化
- 内存的读写速度远快于硬盘
- 自身提供了持久化功能(RDB、AOF两种方式)
- Redis DataBase(简称RDB)
- Append-only file (简称AOF)
RDB是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。
优点:使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能
缺点:RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候。
Append-only file,将“操作 + 数据”以格式化指令的方式追加到操作日志文件的尾部,在append操作返回后(已经写入到文件或者即将写入),才进行实际的数据变更,“日志文件”保存了历史所有的操作过程;当server需要数据恢复时,可以直接replay此日志文件,即可还原所有的操作过程。AOF相对可靠,它和MySQL中bin.log、apache.log、zookeeper中txn-log简直异曲同工。AOF文件内容是字符串,非常容易阅读和解析。
优点:可以保持更高的数据完整性,如果设置追加file的时间是1s,如果redis发生故障,最多会丢失1s的数据;且如果日志写入不完整支持redis-check-aof来进行日志修复;AOF文件没被rewrite之前(文件过大时会对命令进行合并重写),可以删除其中的某些命令(比如误操作的flushall)。
缺点:AOF文件比RDB文件大,且恢复速度慢。
@功能丰富
- 可用作缓存、队列、消息订阅、发布
- 支持键的生存时间
- 按照一定规则删除相应的键
@简单稳定
- 相比SQL而言更加简单
- 不同语言的客户端丰富
- 基于c语言开发,代码量只有3万多行
3,Redis服务操作的一些命令使用
注册服务:
redis-server-service-install redis.windows.conf-loglevel verbose
卸载服务:
redis-server-service-uninstall
启动redis:
redis-server-service-start
停止redis:
redis-server-service-stop
3.1redis-cli的使用之发送命令
在命令行执行redis-cli默认连接:127.0.0.1:6379
指定主机地址、端口
redis-cli-h 127.0.0.1- p 6379
使用ping命令测试与客户端和服务端连接是否正常
redis-cli ping
3.2redis-cli的使用之命令返回值
a,状态回复(最贱蛋的回复)
redis>PING
PONG
redis>set test 123
ok
b,错误回复(以error开头,后面跟着错误信息)
redis>test
(error)ERR unknown command 'test'
(待补充)
3.3Redis的多数据库
Redis默认支持16个数据库,对外都是以一个从0开始的递增数字命名,可以通过参数databases来修改默认数据库个数。客户端连接Redis服务后会自动选择0号数据库,可以通过select命令来更换数据库,例如选择1号数据库:
Redis>select 1
ok
说明:
a,Redis不支持自定义数据库名称
b,redis不支持每个数据库设置访问密码
c,Redis的多个数据库之间不是完全隔离的,flushall会清空所有数据库中的数据
FLUSHALL -- 清空所有数据库的所有数据
FLUSHDB -- 清空当前所在数据库的数据
3.4Redis的基本命令
a,set和get 赋值和取值 当键不存在时,返回空结果
b,获取符合规则的键名列表,语法: key pattern
c,exists 判断一个键是否存在,如果键存在就返回整数类型1,否则返回0,语法:exists key
d,del 删除键,可以删除一个或者多个键,返回值是删除的键的个数,语法:del key
e,type 获取键值的数据类型,返回值可能是String、hash、list、set、zset,语法:type key
f,help 命令是为重要的一个命令
4,Redis的字符串数据类型
4.1字符串类型是redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。可以存储json化的对象、字节数组等。一个字符串类型键允许存贮的数据最大容量是512MB
4.2INCR
递增数字 incr key
当存储的字符串是整数时,Redis提供了一个试用的命令incr,其作用是让当前键值递增,并返回递增后的值
4.3incrby
增加指定的整数,语法:incrby key increment
4.4decr、decrby
decr减少数字,decrby减少指定的数字
4.5append key value 向尾部追加值
append的作用是向键值的末尾追加value。如果键不存在则将该键的值设置为value,即相当于set key value,返回值是追加后字符串的总长度
4.6strlen
获取字符串的长度
strlen命令返回键值得长度,如果键不存在则返回0;
4.7mset、mget
同时设置、获取多个键值
5,Redis之生存时间
5.1设置生存时间
redis在实际使用过程中更多的用作缓存,然而缓存的数据一般都是需要设置生存时间的,即:到期后数据销毁
语法:expire key seconds
TTL返回值:
大于0的数字:剩余生存时间,单位为秒
-1 : 没有生存时间,永久存储
-2 : 数据已经被删除
5.2清除生存时间
清除生存时间:persist key
5.3设置单位为毫秒
生存时间设置为:毫秒,语法:pexpire key milliseconds
6,Jedis
Redis不仅是使用命令来操作的,现在基本上主流的语言都有客户端支持,比如Java 、C、C#等
在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis等,其中官方推荐使用Jedis和Redisson
在企业中用的最多的就是Jedis,下面我们重点学习Jedis
Redis初探的更多相关文章
- redis 初探
2014年6月24日 17:50:57 解压redis后进入源码目录,只用执行make命令就可以完成安装了 安装完成后到src目录里,将 redis-server redis-cli redis.co ...
- Redis初探-Redis安装
官网地址:https://redis.io/download 最新版本是4.0,在这里本人下的是3.2 使用rz命令可以将Redis上传到Linux系统 首先要确定Linux上是否安装了gcc,没有则 ...
- Redis初探,写个HelloWorld
资源获取 https://redis.io/download 从官网上下载redis的源码,使用gcc的安装方式. 安装 make make install 需要达到的效果是,在/usr/local/ ...
- Redis初探(windows/linux安装)
最近在学习Redis,先看看简介: Redis 是完全开源免费的,遵守BSD协议(可以自由的使用,修改源代码的协议,当然需要满足一定的条件),是一个高性能的key-value数据库. 特点&& ...
- Redis—初探Redis
一.什么是Redis? 学习Redis最好的是看官网了,下面是Redis的官网对Redis的介绍 可见,Redis是一个内存存储的数据结构服务器,可以用作数据库.缓存等.支持的数据结构也很丰富,有字符 ...
- Java使用Redis初探
Redis的相关概念不做介绍了,大家也可以先了解下Memcached,然后比较下二者的区别,就会有个整体的印象. 服务器端通常选择Linux , Redis对于linux是官方支持的,使用资料很多,需 ...
- Redis 数据结构-字符串源码分析
相关文章 Redis 初探-安装与使用 Redis常用指令 本文将从以下几个部分进行介绍 1.前言 2.常用命令 3.字符串结构 4.字符串实现 5.命令是如果操作字符串的 前言 平时在使用 Redi ...
- SQL面试笔试经典题(Part 2)
本文是在Cat Qi的原贴的基础之上,经本人逐题分别在MySql数据库中实现的笔记. 参考原贴:http://www.cnblogs.com/qixuejia/p/3637735.html 01 问题 ...
- SQL语句练习手册--第二篇
一.书到用时方恨少:"图书-读者-借阅"类题目 1.1 本题目的表结构 本题用到下面三个关系表: CARDS 借书卡. CNO 卡号,NAME 姓名,CLASS 班级 BOOKS ...
随机推荐
- RTC时钟
1.设置时间之前取消备份区域(BKP)写保护 主要有两部分组成 1.用来和APB1总线对接,对其进行读写操作 2. 预分频模块:在RTC_CR设置相应的允许,位每个TR_CLK周期中RTC产生一个中断 ...
- RedHat/Centos修改root密码
Linux主机忘记密码,只要你能接触物理主机都可以修改root密码的! Redhat6.x 5.x / Centos6.x 5.x 01.开机-空格/enter 02.e-编辑模式 CentO ...
- PE启动菜单修改工具 MsgDiyer(GfxMenu Message制作工具) V2.0.3官方版
MsgDiyer基本功能 1.新建message文件.修改现有message文件:2.自定义背景图片:3.制作message字体,包括行高.大小等(目前不兼容WIN7):4.自定义字库:5.导入外置 ...
- iOS音乐播放器相关
iOS音乐播放器框架主要有两大类:AvPlayer.AvaudioPlayer AvPlayer 能播放本地及网络歌曲 AvaudioPlayer 能播放本地歌曲.有相关代理方法(其实也可以播放网络歌 ...
- oracle---plsql---示例laobai
select * from scott.emp; --1 列出emp表中各部门的部门号,最高工资,最低工资 select deptno,max(sal),min(sal) from scott.emp ...
- 使用VS2010创建WebService 发布、测试
http://blog.sina.com.cn/s/blog_45eaa01a0102vopl.html 1 打开VS2010,菜单 文件->新建->项目 2 选择[ASP.net ...
- sql 的实用函数(包含日期函数、截取字符串函数)
CONVERT() 函数是把日期转换为新数据类型的通用函数. CONVERT() 函数可以用不同的格式显示日期/时间数据. 语法 CONVERT(data_type(length),data_to_b ...
- 外景VR的应用
留坑,续写. 最近在做外景的项目,被相关的帧率优化和灯光布置困扰的不要不要的.下面写下我是怎么优化帧率和对帧率的一些理解. 帧率,游戏的重要影响因素,会对玩家的手感以及视觉产生重大的影响,一般的游戏帧 ...
- win7计划任务执行php脚本方法
第一步:编写bat文件 方法1:php方法 方法2:exploere浏览器 电脑上新建一个txt文本,把代码放进去.然后把他另存为xxx.bat explorer "http://网址/e/ ...
- HTML5视频播放
1.检测浏览器是否支持html5视频播放 <!doctype html> <html> <head> <meta charset="utf-8&qu ...