key-value数据库-Redis
1.简介
Redis是完全开源的ANSI C语言编写、遵守BSD协议,高性能的key-value数据库。
1.1特点
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
1.2优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
2.安装
2.1windows安装
在https://github.com/MicrosoftArchive/redis/releases下下载Redis-x64-3.2.100.zip。
将下载的包移动到c盘下,新建redis文件夹,将压缩包在redis文件夹下解压。
打开一个 cmd 窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.windows.conf 。
C:\redis> redis-server.exe redis.windows.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.100 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 11604
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-' [11604] 24 Nov 11:04:00.253 # Server started, Redis version 3.2.100
这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。
切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。
设置键值对 set myKey abc
取出键值对 get myKey
3.配置
3.1获取配置
#CONFIG GET *
3.2便捷配置
#CONFIG SET loglevel "notice"
4.数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
5.命令
5.1基本命令
启动redis客户端:redis-cli
检测redis服务是否启动:ping -----》返回pong
连接远程:redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
5.2键(key)
增:SET keyname redis ---key后面跟key的名称和key的值
删:del keyname
改:EXPIRE yhkey 60 ---修改key的过期时间、EXPIRE以秒计算、 PEXPIRE 以毫秒计算
ttl myname -----修改key永不过期
rename key yhkey9
查:keys * 查询所有key
keys yh* 过滤出包含yh的key
exists keyname 判断key是否存在
pttl mekey查找key的剩余时间
5.3Redis-String
增:SET keyname2 "hello myname is yaohong, what is your name?"
查:GET keyname2
截取字符串:GETRANGE keyname2 2 14
同时获取多个字符串:MGET yhkey1 yhkey3
5.4Redis-Hash
增:hmset(同时将多个file-value设置到hash表中)、hget
删:hdel
查:hget、hgetall、hkey获取hash表中所有域(file)、
hmget myhash file1 file2 file3(返回哈希表中,一个或多个给定字段的值)
hvals获取哈希表中所有值
判:hexists 判断是否存在
hlen获取file个数
5.5Redis-List
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
增:lpush(头部插入元素)、rpush(尾部插入元素)
删:lpop(移除列表第一个元素)、rpop(移除列表最后一个元素)、lrem keyname count value(count大于0从头部开始删除value元素)
查:llen(获取列表长度)、lreng key start stop(获取start到stop的元素)
改:lset、rset
5.6Redis-Set
增:sadd、
sunionstore myset myset1 myset2 命令将给定集合的并集存储在指定的集合 myset中
删:spop移除集合中随机数
srem按值移除集合中元素
查:smembers、scard(获取成员数)、
sdiff(列出第一个集合拥有,第二个集合没有的元素)、
sdiffstore(将第一个集合拥有,第二个集合没有的元素保存到第三个集合中)、
sinter(列出两个集合的交集)
smembers列出集合所有成员
改:smove myset1 myset2 "key1" 将key1从myset1移到myset2
判:sismember 判断元素是否是key的成员
5.7Redis-ZSet
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
增:zadd keyname scoren value
删:zrem keyname nember 移除有序集合中的一个或多个成员
zremrangebylex key min max 移除有序集合中给定的字典区间的所有成员。
zremrangebyrank key start stop 移除有序集合中给定的排名区间的所有成员
zremrangebyscore key min max 移除有序集合中给定的分数区间的所有成员
查:zcard 获取集合的成员数
zcount key min max 计算在有序集合中指定区间分数的成员数
zrange key start stop WITHSCORES 通过索引区间返回有序集合成指定区间内的成员
5.8事务
Redis 事务可以一次执行多个命令
开始事务:MULTI
执行事务:EXEC
取消事务:DISCARD 取消事务,放弃执行事务块内的所有命令
监视事务:WATCH 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断
取消监视:UNWATCH 取消 WATCH 命令对所有 key 的监视。
5.9脚本
Eval 命令使用 Lua 解释器执行脚本。
5.10服务器
Redis 服务器命令主要是用于管理 redis 服务。
统计参数:INFO
重置 INFO 命令中的某些统计数据:config resetstat
键数:dbsize
删除所有key:flushall
删除当前数据库key:flushdb
异步保存数据到硬盘:save
6.Redis高级
6.1Redis 数据备份与恢复
备份:save
恢复:1:将生成的rdb文件移动到 redis 安装目录(执行config get dir)并启动服务即可
创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。
6.2Redis 安全
设置密码:config set requirepass "itnihao"
auth itnihao
获取密码:CONFIG get requirepass
6.3Redis 性能测试
6.4Redis 客户端连接
查看最大连接数:config get maxclients
设置最大连接数:redis-server --maxclients 100000
6.5Redis 管道技术
Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。
6.6Redis 分区
分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集。
key-value数据库-Redis的更多相关文章
- Redis系列之key操作命令与Redis中的事务详解(六)
序言 本篇主要目的有二: 1.展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力. 2.掌握redis中的事务,让你的数据完整性一致性拥有更优的保障. redis命 ...
- linux --- 8. mysql数据库,redis 数据库
一. mysql 数据库 1.安装方式 ①yum安装 ②源代码编译安装 ③rpm包安装 yum安装的前提条件,是准备好yum源,可以选择163源,清华源,阿里云源,等等等 .安装mariadb的yum ...
- 缓存数据库redis
什么是Redis? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命 ...
- JavaWeb笔记(十)非关系型数据库Redis
Redis Redis是一款高性能的NOSQL系列的非关系型数据库 主流的NOSQL产品 键值(Key-Value)存储数据库 相关产品: Tokyo Cabinet/Tyrant.Redis.Vol ...
- 笔记-数据库-redis
笔记-数据库-redis 1. redis简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 stri ...
- 获取redis中所有的key,清空整个 Redis 服务器的数据
获取 redis 中所有的 key 可用使用 *. redis 127.0.0.1:6379> KEYS * Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数 ...
- NoSql数据库Redis系列(2)——Redis数据类型
一.设计 Redis Key (一).分段设计法 使用冒号把 key 中要表达的多种含义分开表示,步骤如下: 1.把表名转化为 key 前缀 2.主键名(或其他常用于搜索的字段) 3.主键值 4.要存 ...
- 【一个idea】YesSql,一种在经典nosql数据库redis上实现SQL引擎的方案(我就要开历史的倒车)
公众号链接 最高级的红酒,一定要掺上雪碧才好喝. 基于这样的品味,我设计出了一套在经典nosql数据库redis上实现SQL引擎的方法.既然redis号称nosql,而我偏要把SQL加到redis上, ...
- 一篇文章带你了解NoSql数据库——Redis简单入门
一篇文章带你了解NoSql数据库--Redis简单入门 Redis是一个基于内存的key-value结构数据库 我们会利用其内存存储速度快,读写性能高的特点去完成企业中的一些热门数据的储存信息 在本篇 ...
- python【第十一篇】消息队列RabbitMQ、缓存数据库Redis
大纲 1.RabbitMQ 2.Redis 1.RabbitMQ消息队列 1.1 RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议 ...
随机推荐
- JavaScriptOOP
1. OOP基础 1.1面向对象编程OOP 1.语言的分类: ① 面向机器:汇编语言 ② 面向过程:C语言 ③ 面向对象:C++ Java PHP 等 2.面向过程与 ...
- 使用svn与maven管理的项目导入Eclipse,但是与本地svn客户端关联不上?
因为这个问题,导致我的项目导了删,删了导.现在终于弄明白了. 首先,需求场景是: 1.使用svn进行版本控制; 2.使用maven进行项目管理. 3.使用Tortoise svn将项 ...
- Java 多态、内部类、异常、包
一.多态 1. 概述 理解:多态可以理解为事物存在的多种体(表)现形态. 例如: 动物中的猫和狗. 猫这个对象对应的是猫类型,例如:猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为 ...
- 从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建
从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建 废话不说,直接撸步骤!!! 1.创建主项目:ncc-parent 选择maven创建项目,注意在创建项目中,packing选择 ...
- jfinal使用jstl表达的存在的问及解决
问题 使用jstl 的el表达式 传递数据刷新页面,页面数据不显示,经过验证,数据的确传递过去,但是官方文档并没有详细描述,getModel() 不需要设get set() ,但是使用jstl el表 ...
- Git相关操作三
1.显示当前分支: git branch 输入上述命令可以显示出分支,*所在的分支为当前分支. 2.新建分支: git branch new_branch new_branch为新建分支的名称,注意该 ...
- 主要讲下hack的兼容用法,比较浅,哈哈
hack是主要来处理IE的兼容,不同的IE,不同的兼容方式 /* 属性前缀法(即类内部Hack): *color:#000; *号对IE6,IE7都生效 +color:#555; ...
- JAVA基础知识总结:七
一.面向对象编程 1.什么是面向对象? 万物皆对象 案例一:我想吃大盘鸡 面向过程 面向对象 1.我自己去买一只鸡 1.委托一个会砍价的人去帮忙买鸡 2.我自己宰鸡 2.委托一个胆大的人宰鸡 3.我自 ...
- CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data译文
原文地址:http://www.oschina.net/translate/crush-controlled-scalable-decentralized-placement-of-replicate ...
- vue 起步走 --“安装篇”
在说明之前,溶解得在这说一句 ,菜鸟开始安装这些东西真是不容易,各种疯狂的百度,搜索.(找的我眼泪都快流下来了),不说废话,开始正经. 第一步:环境的搭建 : vue推荐开发环境: Node.js: ...