redis学习之redis的安装和简介
redis简介
Redis是一个开源的,高性能的,基于键值对的缓存与存储系统,通过设置各种键值数据类型来适应不同场景下的缓存与存储需求。同时redis的诸多高层级功能使其可以胜任消息队列,任务队列等不同角色。
存储结构
Redis是REmote Dictionary Server(远程字典服务器)的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容,目前为止redis支持的键值数据类型如下:字符串类型,散列类型,列表类型,集合类型,和有序集合类型。其中一个字符串类型键值允许存储的数据最大容量为521M.
内存存储与持久化
Redis数据库中的所有数据都存储在内存中。在一台普通的笔记本电脑上,Redis可以在一秒内读写超过10万个键值。
数据存储在内存也有问题比如断电。redis还提供了持久化的存储,既可以将内存的数据异步写入应哦按,同时不影响继续
提供服务。
功能丰富
Redis可以为每个键设置生存时间,生存时间到后期会自动删除,这一功能可以利用redis作为缓存系统来调用。
除此之外,redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以容易地实现一个高性能的优先级队列,同时在更高层上,redis还支持"发布/订阅"的消息模式,可以基于此构建聊天室。
redis的安装
参考windows安装redis
redis命令行客户端
通过redis-cli向redis发送命令,
通过-h和-p自定义地址和端口号$redis-cli -h 127.0.0.1 -p 6379
通过ping命令测试连接是否正常
$redis-cli PING####状态回复
PONG####错误回复
如果上述命令不存在或者存在格式错误,会返回以error开头的错误。如reids>ERRORCOMMEND
输出
(error)ERR unknow command 'ERRORCOMMEND'
获取先输入redis-cli进入交互模式,然后自由输入命令,例如PING.
整数回复
返回递增后的键值,类似mysql最后的索引值
依次执行以下命令redis-cli
127.0.0.1:6379> set foot barOK
127.0.0.1:6379> INCR foo
(integer) 1
127.0.0.1:6379> set foot barOK
127.0.0.1:6379> INCR foo
(integer) 2
可以看到每次插入一条数据返回值都跟着变化。
字符串回复
127.0.0.1:6379> set foot barOK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379> set foo bananaOK
127.0.0.1:6379> get foo
"banana"
127.0.0.1:6379>
可以看到get命令可以获取foo的最新的键值。
字符串多行回复
127.0.0.1:6379> KEYS *1) "proxies"2) "foo"3) "foot"
返回键名1是我之前执行的,3是之前foo打错了执行的。keys命令需要便利redis中的所有键,当键的数量较多时会影响性能,不建议生产环境中使用。
多行数据库
redis提供了多个来存储数据的字典,每个字典类型mysql的数据量,每个数据库对外都是以0开始递增,redis默认支持16个数据库,客户端连接到服务端时,redis默认使用0进行操作数据库,使用select可以根据数据库。比如选择1号数据库:
redis-cli
127.0.0.1:6379> select 1OK
127.0.0.1:6379[1]> get foo
(nil)
127.0.0.1:6379[1]>
redis不支持自定义数据库的名字,每个数据库必须以编号命名。比如可以使用0号数据库存储某个应用生产环境的数据,1号数据库存储测试环境中的数据,需要注意的是不同的应用应该使用不同的redis实例redis也不支持为每个数据库设置不同的访问密码。
最重要的是redis实例中所有数据库的数据并不是完全隔离的,比如FLUSHALL可以清空一个redis实例中所有数据库中的数据。。由于redis非常轻量级,一个空的redis实例占用内存只有1MD左右,所以不用担心多个redis实例会额外占用很多内存。
几个基础命令
1.keys 见上面的例子
2.判断一个键是否存在
exists key 如果存在返回1 ,不存在返回0
0.0.1:6379> exists foo
(integer) 1
127.0.0.1:6379> exists foo2
(integer) 0
127.0.0.1:6379> exists foot
(integer) 1
127.0.0.1:6379>
3.删除键
del key [key …]
可以删除一个或者多个空格间隔,返回值是删除的个数。del命令不支持通配符。
127.0.0.1:6379> set f1 1OK
127.0.0.1:6379> set f3 1OK
127.0.0.1:6379> set f2 1OK
127.0.0.1:6379> keys *
1) "key"
2) "f1"
3) "proxies"
4) "f2"
5) "foot"
6) "foo"
7) "f3"
127.0.0.1:6379> del f1
(integer) 1
127.0.0.1:6379> del f2 f3
(integer) 2
127.0.0.1:6379>
3.获取键值的数据类型
type key
type命令用来获取键值类型,返回值可能是string,hash,list,set,zset(有序集合)。
127.0.0.1:6379> set test 1OK
127.0.0.1:6379> type teststring
127.0.0.1:6379> lpush test2 2
(integer) 1
127.0.0.1:6379> type test2list
127.0.0.1:6379>
lpush命令是向指定的列表类型键中增加一个元素,如果不存在则创建。后面详解。
读取键值
get key
根据键获取其值。
127.0.0.1:6379> get fo
(nil)
127.0.0.1:6379> get foo
"banana"
127.0.0.1:6379>
不存在的时候返回nil.
递增数字
INCR key
增加指定的整数
INCRBY key increment
incrby和incr命令效果差不多,区别是incrby可以指定增加的数字
127.0.0.1:6379> incrby bar 2
(integer) 2
127.0.0.1:6379> incrby bar 5
(integer) 7
127.0.0.1:6379> incr bar
(integer) 8
127.0.0.1:6379> incr bar
(integer) 9
127.0.0.1:6379>
增加指定的浮点数
incrbyfloat key inrement
这个命令类似上面两个只不过是可以传递一个浮点数而已
127.0.0.1:6379> incrbyfloat bar 3.14
"12.140000000000001"
127.0.0.1:6379> incrbyfloat bar 3.14e+9
"3140000012.1399999"
127.0.0.1:6379>
减少指定的整数
有增加就有减少
decr和decrby和增加的用法一样,只不过是键值递减。
decrby key 4相当于incrbu key -4
向尾部追加值
向键值的末尾加字符串,如果不存在就是相当于set key value
127.0.0.1:6379> append bar "345"
(integer) 21
127.0.0.1:6379> get bar
"3140000012.1399999345"
127.0.0.1:6379>
127.0.0.1:6379> append asd "hello dj"
(integer) 8
127.0.0.1:6379> get asd
"hello dj"
127.0.0.1:6379>
获取字符串长度
STRLEN key
返回键值长度,不存在返回0.
127.0.0.1:6379> set key "ᄎᆭ"OK
127.0.0.1:6379> strlen key
(integer) 4
127.0.0.1:6379> set key "ᅣ ̄채"OK
127.0.0.1:6379> strlen key
(integer) 4
127.0.0.1:6379>
同时设置多个键值
Mget key/mset key value
mget/mset和get/set相似,前者可以获取/设置多个值。
(integer) 4
127.0.0.1:6379> mget bar foo
1) "3140000012.1399999345"
2) "banana"
127.0.0.1:6379> mset a 1 b 2OK
127.0.0.1:6379>
位操作
getbit key offset
setbit key offset value
bitcount key [start][end]
bitop operation destkey key [key ….]
一个字节由8个二进制位组成,redis提供了以上四个命令可以直接对二进制进行操作。
redis学习之redis的安装和简介相关推荐
- Redis学习笔记~Redis在windows环境下的安装
Redis是一个key-value的存储系统,它最大的特点就是可以将数据序列化到文件中. redis存储在服务器的内存或者文件中,它不是session,不是cookies,它只是个更安全,更稳定,更可 ...
- Redis学习笔记---Redis的模式订阅与退订
Redis学习笔记-Redis的模式订阅与退订 1.发布订阅简介 发布订阅是一种通信的模式,Redis提供了发布订阅功能,可以用于消息的传输 Redis的发布订阅机制包括三个部分,publisher( ...
- Redis学习笔记---Redis的主从复制
Redis学习笔记-Redis的主从复制 1.Redis的高可用性 高可用性(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性. Rei ...
- Redis学习笔记---Redis的事务
Redis学习笔记-Redis的事务 1. Redis事务(弱事务)和Mysql事务对比 Atomicity(原子性):构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行. Redi ...
- 【Redis学习】Redis的安装、管理、适用场合以及使用
1.Redis概述 我们知道,内存是电脑主板上的存储部件,用于存储当前正在使用的数据和程序,CPU可以与内存直接沟通,所以访问速速非常高:而外存数据必须加载到内存以后程序才能使用.如果把CPU当做一个 ...
- Redis学习之Redis概述与安装以及性能测试
Redis入门 概述 Redis是什么 Redis(remote dictionary server)远程字典服务器 是一个开源的使用c语言编写.支持网络.可基于内存亦可持久化的日志型.key-val ...
- Redis学习一Redis的介绍与安装部署
NoSql 介绍 NoSql 是key-value形式存储,和传统的数据库不一样,不一定遵循传统数据库的一些基本要求,比如遵循SQL标准(insert\update\delete\select).AC ...
- Redis学习之Redis概述及原理、基本操作及持久化
一.Redis介绍 Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 它通常被称为数据结构服务 ...
- 【Redis学习】Redis管理命令总结
1.键管理 之前通过对五种数据类型的操作命令的学习发现,Redis在对每种数据进行处理之前,都要先指定该数据的key,然后再指定对该数据进行何种操作. Redis中的key有点类似于Java中的变量名 ...
- linux查找influx的安装位置,InfluxDB学习之InfluxDB的安装和简介 | Linux大学
最近用到了 InfluxDB,在此记录下学习过程,同时也希望能够帮助到其他学习的同学. 本文主要介绍InfluxDB的功能特点以及influxDB的安装过程.更多InfluxDB详细教程请看:Infl ...
最新文章
- 方向盘的正确驾驭方法
- android开发 存储权限,Android openFileOutput – 没有创建存储的权限
- 【OpenCV】OpenCV实战从入门到精通之 -- 输入输出XML和YAML文件详解
- EAS 表格、查询方案存储表
- 软件无线电在4G技术的应用
- bootsect.exe linux,bootsect.exe
- DevExpress lookupedit下拉列表不显示内容的问题
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口
- NoSuchObjectException(message:ods_db.event table not found)
- ubuntu 用apt安装预编译的preempt 实时操作系统内核
- 多ubuntu主机远程桌面连接方案
- Python 结巴分词(jieba)Tokenize和ChineseAnalyzer的使用及示例代码
- 我写了一份初学者的学习实践教程!
- Android发送短信SMS的编程
- android 连接电脑,安卓手机怎么连接电脑详细介绍【图文教程】
- shunit2单元测试框架
- 下载USGS的地物光谱数据库的网址
- 自动从头到尾播放清风dj网的代码
- PCR毫米波雷达应用介绍-佰誉达
- ADC12DJ3200 FMC子卡原理图PCB代码 FMC采集卡 JESD204B源码
热门文章
- [翻译]高阶Python一学就会
- 厚积薄发 前端学习笔记 CSS基础篇-左侧固定,右侧自适应(或右侧固定,左侧自适应)布局方法...
- python基于udp的网络聊天室再用tkinter显示_Python实现网络聊天室的示例代码(支持多人聊天与私聊)...
- node.js打开指定浏览器的四种方式
- ShardingSphere-Proxy 主从读写 入门使用
- git 撤销全部的commit_git如何撤销commit的方法(未push)
- php oracle 8.1.7,Oracle 8.1.7在redhat 7.3的安装方法
- centos安装python3.6_Centos安装python3.6和pip步骤记录
- 树莓派3b能装java吗_树莓派3B-系统安装
- mysql返回对象_使用mysql_fetch_object()以对象的形式返回查询结果