redis是c语言开发的

Nosql  == not only sql

打开一个 cmd 窗口
使用cd命令切换目录到 C:\redis 运行 redis-server.exe
redis.windows.conf
 。

非关系型数据库    redis 和 mongodb

若是想方便的话,可以把 redis
的门路加到系统的环境变量里,那样就省得再输路径了,后边的可怜
redis.windows.conf
可以省略,倘诺不难,会启用默许的。输入之后,会来得如下界面:

解决:

图片 1

  1. High performance   高并发读写
  2. Huge storage   海量数据的高效能存储和走访
  3. High scalability & High availability 高可扩大性和高可用性

此时另启一个cmd窗口,原来的绝不关闭,不然就不可能访问服务端了。

 

切换来redis目录下运作 redis-cli.exe -h 127.0.0.1 -p 6379 。

Nosql数据库的四大分类:

设置键值对 set myKey abc

  1. k-v存储
  2. 列存储 Hbase
  3. 文档存储 Mongodb
  4. 图形数据库

取出键值对 get myKey

对比图:

 

图片 2

 

 

基本操作

Nosql 特性:

NoSql概述

何以要求NoSql

高并发读写

海量数据的高成效存储和访问

高可扩大性和高可用性

  1. 易扩展
  2. 利落的数据模型
  3. 运气据量高性能,高可用

二:NoSql数据库的四大分类

键值(Key-Value)存储

列存储

文档数据库

图表数据库

图片 3

NoSql的特点

易扩展

利落的数据模型

大数据量,高性能

高可用

 

Redis概述

高性能键值对数据库,援救的键值数据类型:

字符串类型 散列类型 列表类型 集合类型 有序集合类型

Redis常用场景

缓存 职责队列 网站访问计算 数据过期处理 应用排名榜

分布式集群架构中的session分离

redis是c语言开发的

Jedis介绍

Jedis是redis 官方首选的Java客户端开发包

http://github.com/xetorthio/jedis

Jedis-jar url

下载地址: https://mvnrepository.com/artifact/redis.clients/jedis

                #Redis 的数据结构 

五种数据类型:

字符串(String) , 哈希(hash) ,字符串列表(list) ,
字符串集合(set),有序字符串集合(sorted set) 
常用的是字符串和哈希

 

Key的概念注意点:

永可是长

不要过短

合并的命名规范

redis应用场景:

存储String

常用命令:

赋值: set company imooc ,取值就足以经过 get company 得到 imooc

getset命令: getset company baidu 结果:imooc 然后 get company 结果: baidu
.getset key value 就是先获得key后更改value

去除 del key ,比如: 先设置 key 和value set person jack ,del person
重回数字1,如果再去获取get person 结果: nil 代表不存在

增添命令

取值

数值增减

递增 incr num 默许就是0,而get num 的结果就是 1 。

同理 decr num2 默许也是0 而get num 的结果就是 -1 。

incrby num 5 就是通过 num+5的结果。一般num默许是0,现在应有就是5

同理decrby num2 5 结果就是-5

  • 做缓存
  • 职务队列
  • 网站访问统计
  • 行使名次榜
  • 数据过期处理
  • 等等

存储Hash

String key和value的map容器

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

hset key field value 命令:

例子:

赋值 
hset myhash username jack

hset myhash age 18

里头 myhash 就是key 而username
和age都是字段名称,而前面的值时势字段里的值。那和map的汇集有一些区分

hset myhash2 username jack age 18

除去: hdel myhash2 结果就是: empty list or set

若是在随后去删除 hdel myhash2 username 结果 0 
去除没有的字段就重临0

 

存储list:

ArrayList使用数组方式

LinkedList使用双向链接格局

双向链表中加进数据

双向链表中删去数据


存储list常用命令:

两端添加 查看列表 两端弹出 获取列表元素个数 伸张命令

命令: lpush key value[value] 
lpush mylist3 a b c 1 2 3

命令: lrange key start stop 
取出: lrange mylist3 0 5 结果就是 3 2 1 c b a 那和java
中list集合有一点不同 
自然也足以如此取值 lrange mylist3 0 -1
,结果和方面依旧一样的。0代表首个要素,而-1 代表最后一个要素

命令: 
lpop key 移出并收获列表的率先个要素

llen key 获取列表长度

rpop key 移出并得到列表的终极一个元素

lpush key value 插入到已存在列表尾部,

rpush key value 插入到已存在列表底部

lpushx key value 同理也是插入到列表尾部

rpushx key value 同理也是插入到列表尾部

lpushx mylist3 x ,通过查阅 lrange mylist 0 -1 得 x 3 2 1 a b c

redis的安装: 百度

存储set

和list类型不一样的是,set集合中不容许出现重复的要素

set可含蓄的最大因素数量是4294967295

 

储存set常用命令

加上/删除元素 得到集合中的元素 扩大命令

聚集中的差集运算 集合中的插花运算 集合中并集运算

要素添加:

sadd myset a b c 结果为 3

sadd myset a 结果为0

sadd myset 1 2 3

除去元素 :

srem myset 1 2 结出就是: a b 3 c

看清元素是还是不是存在 
sismember myset a 存在重回 1 不存在就重临0

差集运算: sdiff key[key]

混合运算 sinner key [key ]

彰显集合中负有的因素 SMEMBERS key

浮现集合中成员数量 SCARD key

回到集合中的一个或七个成员 srandmember key[count]

安装好redis之后(linux)

积存Set使用境况

盯住一些唯一性数据

用来掩护数据对象时期的关系关系

修改配置文件来后台运行   

Redis的Keys的通过操作

keys * 查看所有的key 
del my1 my2 my3 删除某些key

exists my1 查看key是不是存在 重回0是存在,1不设有

rename company newcompany 重命名为newcompany

expire key 1000 为key设置过期时间

TTL key 
以秒为单位,再次回到给定 key 的多余生存时间(TTL, time to live)。

图片 4

Redis特性

连锁特性

绝大部分据库

redis事务

多数据: 
默许是0号数据库

select 0 ,当然也得以活动数据库 move myset 1 就是将0中的myset移动到myset

MULTI 
标志一个事务块的上马。

EXEC 
实施所有事务块内的一声令下。

DISCARD 
废除事务,甩掉举办工作块内的保有命令。

./bin/redis-server
./redis.conf      用配置文件启动redis服务

Redis持久化

RDB方式

AOF方式

持久化使用格局: 
RDB持久化 AOF持久化 无持久化 同时接纳RDB和AOF

 ps -ef | grep redis    
查看redis服务是不是起来

RDB

优势:

RDB 是一个非凡紧凑(compact)的公文,它保存了 Redis
在某个时刻点上的数量集。 那种文件非凡适合用于举办备份:
比如说,你可以在近期的 24 小时内,每刻钟备份五遍 RDB
文件,并且在每个月的每日,也备份一个 RDB 文件。
那样的话,就算遇上问题,也可以天天将数据集还原到不一样的本子。RDB
卓殊适用于灾殃復苏(disaster
recovery):它唯有一个文件,并且内容都格外紧凑,能够(在加密后)将它传送到其余数据焦点,或者亚马逊(Amazon)S3 中。RDB 可以最大化 Redis 的性能:父进度在保存 RDB
文件时唯一要做的就是 fork
出一个子历程,然后那个子进度就会处理接下去的有所保留工作,父进程无须执行其它磁盘
I/O 操作。RDB 在回复大数额集时的快慢比 AOF 的复原速度要快

劣势:

借使你必要尽量防止在服务器故障时丢失数据,那么 RDB 不吻合您。 就算 Redis
允许你设置区其他保存点(save point)来支配保存 RDB 文件的效能, 可是,
因为RDB 文件必要保留整个数据集的景况, 所以它并不是一个落魄不羁的操作。
因而你可能会至少 5 分钟才保存三回 RDB 文件。 在那种景色下,
一旦暴发故障停机, 你就可能会丢掉好几分钟的数额。每便保存 RDB
的时候,Redis 都要 fork()
出一个子历程,并由子进度来拓展实际的持久化工作。 在数据集相比较庞大时,
fork() 可能会丰裕耗时,造成服务器在某某飞秒内停下处理客户端;
若是数据集非凡伟大,并且 CPU
时间相当不安的话,那么那种甘休时间竟然可能会长达百分之百一秒。 即使 AOF
重写也须求举办 fork() ,但无论 AOF
重写的实施间隔有多长,数据的耐久性都不会有其余损失

kill -9 <进程号>       
杀死进度来关闭redis-server

AOF

优势:

利用 AOF 持久化会让 Redis 变得分外耐久(much more
durable):你可以设置差别的 fsync 策略,比如无 fsync ,每分钟四次 fsync
,或者每一趟执行写入命令时 fsync 。 AOF 的默许策略为每分钟 fsync
三次,在那种布署下,Redis
仍旧可以保持卓越的属性,并且尽管暴发故障停机,也最多只会丢掉一分钟的数据(
fsync 会在后台线程执行,所以主线程可以百尺竿头更进一步地处理命令请求)。AOF
文件是一个只举行充实操作的日志文件(append only log), 由此对 AOF
文件的写入不必要开展 seek ,
即便日志因为一些原由此富含了未写入完整的一声令下(比如写入时磁盘已满,写入中途停机,等等),
redis-check-aof 工具也足以随意地修复那种题材。 
Redis 可以在 AOF 文件体积变得过大时,自动地在后台对 AOF 进行重写:
重写后的新 AOF 文件包括了回复当前多少集所需的蝇头命令集合。
整个重写操作是相对安全的,因为 Redis 在开立异 AOF
文件的经过中,会一连将指令追加到存活的 AOF
文件之中,即便重写进度中发出停机,现有的 AOF 文件也不会丢掉。 而一旦新
AOF 文件创造完成,Redis 就会从旧 AOF 文件切换来新 AOF 文件,并开首对新
AOF 文件进行充实操作。AOF 文件有序地保存了对数据库执行的具有写入操作,
那些写入操作以 Redis 协议的格式保存, 因此 AOF
文件的始末非凡不难被人读懂, 对文件进行剖析(parse)也很自在。
导出(export) AOF 文件也非凡容易: 举个例子, 假若你不小心执行了
FLUSHALL 命令, 但只要 AOF 文件未被重写, 那么一旦停止服务器, 移除 AOF
文件末尾的 FLUSHALL 命令, 比量齐观启 Redis , 就足以将数据集復苏到 FLUSHALL
执行以前的情况。

劣势: 
对此同样的数据集来说,AOF 文件的体积平时要当先 RDB
文件的体积。根据所利用的 fsync 策略,AOF 的进程可能会慢于 RDB 。
在相似景况下, 每秒 fsync 的属性仍旧格外高, 而关闭 fsync 可以让 AOF
的进度和 RDB 一样快, 即便在高负荷之下也是如此。
然则在拍卖巨大的写入载入时,RDB
可以提供更有担保的最大延迟时间(latency)。AOF 在过去早就发生过那样的
bug : 因为个别命令的由来,导致 AOF
文件在重复载入时,无法将数据集复苏成保存时的面相。 (举个例子,阻塞命令
BRPOPLPUSH 就曾经引起过如此的 bug
。) 测试套件里为那种场地添加了测试:
它们会自动生成自由的、复杂的数据集,
并通过重新载入那几个数据来担保一切正常。 纵然这种 bug 在 AOF
文件中并不广泛, 可是相比较的话, RDB 差不离是不能够出现那种 bug 的。

 

也足以用  ./bin/redis-cli
shutdown  来关闭redis

 


Jedis   java的连接redis的一个jar包

连接redis的例子,创设连接池的例证

图片 5

 

防火墙 6379 的端口打开

图片 6

 

连接池

图片 7

图片 8

 


Redis的数据结构:

  1. 字符串             String
  2. 字符串列表      list
  3. 哈希                 hash
  4. 字符串集合      set
  5. 有序字符串      sorted-set

储存String常用命令:

  • set                建立
  • get                查看
  • getset          重返一个字符串,也就是键的旧值。
    即使键不存在,则赶回nil
  • del               删除
  • incr             数字有增无减1
  • decr            数字收缩1
  • incrby         数字有增无减自定义
  • decrby       数字缩小自定义
  • append      再次来到一个整数,在追加操作后的字符串的尺寸。

存储Hash:

  • hset key key_name values           
  • hset key key_name1 values1        建立hash,赋值单个
  • hmset key key_name value key_name1 value1       建立hash,赋值多少个
  • hget key key_name             得到单个值
  • hmget key key_name key_name1     得到八个值
  • hgetall key       得到全套的key,value
  • hlen     得到长度
  • hkeys   获得键
  • hvals   获得值

存储List:

  • lpush
  • rpush
  • lrange   后更参数index  范围
  • lpop     取出后没有
  • rpop
  • llen
  • 等等

存储Set:

与list不相同,不允许出现重复的要素

  • sadd  key     添加 
  • srem  key     删除
  • smembers key   查看成员值
  • scard key     重返成员个数
  • 等等

存储Sorted-Set

  • zadd myset 50 p 60 j 70 x     添加有序的set
  • zadd 100 p        如若value相同,分数会覆盖
  • zscore myset p     查询p的分数
  • zcard myset      查询长度
  • zrem  myset  p   删除p
  • 等等

Redis   key的通用操作

  • keys *
  • del key
  • exists key     重返1意味存在
  • get key
  • rename key    重命名

Redis特性:

  multi  事务块

  exec 执行工作

  discard 撤销事务

图片 9


Redis 持久化:

  • RDB情势  可以指定多少秒写入磁盘一遍
  • AOF方式 读取log
  • 无持久化
  • 同时RDB和AOF

redis默认是RDB方式:

  优势:

  劣势:

  配置:

    save 900 1

    save 300 10

    save 60 10000

    dbfilename dump.rdb  保存文件名

    dir ./  在当前目录保存

AOF方式:

  优势:

  劣势:

  配置:

    appendonly no/yes  是或不是启用

    #appendfsync always  每修改四次就一起一回

    #appendfsync everysec  每秒同步几次

    #appendfsync no    不同步

  进入appendonly.aof文件删除最终的通令就足以高达裁撤的目标


from:http://www.imooc.com/learn/839

相关文章