文档章节

Redis入门之一简介

Kerry_Han
 Kerry_Han
发布于 2014/08/08 10:39
字数 1109
阅读 204
收藏 0

1. Redis 简介

  • Redis (REmote dictionary server)远程字典服务器,以字典结构存储数据。

目前支持的键值类型包括:

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

  • Redis 所有数据在内存中,读取速度快,但是程序退出后,内存数据会丢失,所以redis支持异步数据持久化。

  • Redis功能丰富,也可以用作缓存,队列系统

  • Redis和memcached很类似,都是基于key value的内存数据库

  • 使用简单,如果查询的sql如下

    select title from posts where id ='1' limit 1

    如果使用redis语句,如下:  HGET post:1 title

  •   几十种客户端编程语言支持,提供了丰富的库

2 入门命令测试

2.1 多数据库

redis默认提供16个数据库,0-15,测试如下

redis 127.0.0.1:6379> ping
PONG
redis 127.0.0.1:6379> KEYS *
1) "logn"
redis 127.0.0.1:6379> select  111
(error) ERR invalid DB index
redis 127.0.0.1:6379[111]> select  16
(error) ERR invalid DB index
redis 127.0.0.1:6379[16]> select  15
OK
redis 127.0.0.1:6379[15]> KEYS *
(empty list or set)
redis 127.0.0.1:6379[15]> select 0
OK
redis 127.0.0.1:6379> keys *
1) "logn"
redis 127.0.0.1:6379>

  1. 通过select命令切换数据库

  2. 不支持数据库重命名

  3. 一个空的redis实例占用1M内存,轻量级

2.2 键值相关命令

SET 

GET

KEYS

DEL

TYPE

EXISTS

redis 127.0.0.1:6379> SET logn='hello redis'
(error) ERR wrong number of arguments for 'set' command
redis 127.0.0.1:6379> SET logn='helloredis'
(error) ERR wrong number of arguments for 'set' command
redis 127.0.0.1:6379> SET logn  helloredis
OK
redis 127.0.0.1:6379> GET logn
"helloredis"
redis 127.0.0.1:6379> TYPE logn
string
redis 127.0.0.1:6379> EXIST logn
(error) ERR unknown command 'EXIST'
redis 127.0.0.1:6379> EXISTS logn
(integer) 1
redis 127.0.0.1:6379> DEL logn
(integer) 1
redis 127.0.0.1:6379> DEL logn
(integer) 0
redis 127.0.0.1:6379> EXISTS logn
(integer) 0
redis 127.0.0.1:6379>

2.3 incr 和decr 

redis 127.0.0.1:6379> incr num
(integer) 1
redis 127.0.0.1:6379> incr num
(integer) 2
redis 127.0.0.1:6379> incr num
(integer) 3
redis 127.0.0.1:6379> incrby num 4
(integer) 7
redis 127.0.0.1:6379> decrby num 2
(integer) 5
redis 127.0.0.1:6379> decr num
(integer) 4
redis 127.0.0.1:6379>

2.4  批量设置,读取MSET,MGET

redis 127.0.0.1:6379> MSET a1 1 a2 2 a3 3
OK
redis 127.0.0.1:6379> MGET a1
1) "1"
redis 127.0.0.1:6379> KEYS *
1) "a2"
2) "a3"
3) "num"
4) "a1"
redis 127.0.0.1:6379> MGET a2
1) "2"
redis 127.0.0.1:6379> MGET a3
1) "3"
redis 127.0.0.1:6379>

2.5  散列类型

car:1----->name--->value

HSET,  HGET,

redis 127.0.0.1:6379> HSET car1  name AUDIO
(integer) 0
redis 127.0.0.1:6379> HSET car1 price  30w
(integer) 1
redis 127.0.0.1:6379> HSET car2  name  AUDIO
(integer) 0
redis 127.0.0.1:6379> HSET car2  price  20w
(integer) 1
redis 127.0.0.1:6379> HGET car2  name
"AUDIO"
redis 127.0.0.1:6379> HGET  car1  price
"30w"
redis 127.0.0.1:6379>

设置多个field ,利用HMSET

redis 127.0.0.1:6379> HMSET car3  name  buick   price  10w
OK

判断field是否存在 HEXISTS

redis 127.0.0.1:6379> HEXISTS  car3 name
(integer) 1
redis 127.0.0.1:6379> HEXISTS  car3 notexist
(integer) 0

增加命令HINCRBY

删除命令HDEL

获取field或者value

redis 127.0.0.1:6379> HKEYS car1
1) "name"
2) "price"
redis 127.0.0.1:6379> HKEYS car2
1) "name"
2) "price"
redis 127.0.0.1:6379> HKEYS car3
1) "name"
2) "price"
redis 127.0.0.1:6379> HVALS  car1
1) "AUDIO"
2) "30w"
redis 127.0.0.1:6379> HVALS  car2
1) "AUDIO"
2) "20w"
redis 127.0.0.1:6379> HVALS  car3
1) "buick"
2) "10w"
redis 127.0.0.1:6379>

2.6  列表类型

1, 一个列表类型键和散列一样,最多2^32-1个元素

2.  利用双向链表实现,向两端添加元素时间复杂度是o(1),获取越接近两端的元素速度越快。这意味着一个几千万的元素的列表,或者头部或者尾部的十条记录也是很快的。(和只有20个元素的列表中获取头部或者尾部的10条记录速度是一样的)。两端插入时间复杂度同样为o(1)这种特性用于社交网络中的新鲜事,日志管理等,可以解决关系数据库无法应付的场景。

3.  缺点是通过索引访问比较慢,一个一个查找。


常用命令, LPUSH,LPOP,RPUSH,RPOP,LRANGE

redis 127.0.0.1:6379> LPUSH numbers 3
(integer) 1
redis 127.0.0.1:6379> LPUSH numbers 2 1
(error) ERR wrong number of arguments for 'lpush' command
redis 127.0.0.1:6379> LPUSH numbers 2
(integer) 2
redis 127.0.0.1:6379> RPUSH  numbers  5
(integer) 3
redis 127.0.0.1:6379> LPOP numbers
"2"
redis 127.0.0.1:6379> RPOO number
(error) ERR unknown command 'RPOO'
redis 127.0.0.1:6379> RPOO numbers
(error) ERR unknown command 'RPOO'
redis 127.0.0.1:6379> RPOP numbers
"5"
redis 127.0.0.1:6379> LRANGE  0  2
(error) ERR wrong number of arguments for 'lrange' command
redis 127.0.0.1:6379> LRANGE numbers 0  2
1) "3"
redis 127.0.0.1:6379>

2.7  集合类型

redis 127.0.0.1:6379> SADD letters  a b c
(integer) 3
redis 127.0.0.1:6379> SMEMBERS letters
1) "c"
2) "a"
3) "b"
redis 127.0.0.1:6379> SREM a
(error) ERR wrong number of arguments for 'srem' comman
redis 127.0.0.1:6379> SREM letters a
(integer) 1
redis 127.0.0.1:6379> SADD letters2  c d e
(integer) 3
redis 127.0.0.1:6379> SDIFF  letters  letters2
1) "b"
redis 127.0.0.1:6379> SDIFF  letters2  letters
1) "d"
2) "e"
redis 127.0.0.1:6379> SMEMBERS letters
1) "c"
2) "b"
redis 127.0.0.1:6379> SMEMBERS letters2
1) "c"
2) "d"
3) "e"
redis 127.0.0.1:6379>

SADD 

SMEMBERS 

 SREM 删除

SDIFF 

© 著作权归作者所有

Kerry_Han
粉丝 15
博文 174
码字总数 54257
作品 0
海淀
程序员
私信 提问
SpringBoot集成Redis实现缓存处理(Spring AOP实现)

第一章 需求分析 计划在Team的开源项目里加入Redis实现缓存处理,因为业务功能已经实现了一部分,通过写Redis工具类,然后引用,改动量较大,而且不可以实现解耦合,所以想到了Spring框架的A...

Javahih
2017/12/14
0
2
比MySQL快60倍 redis从入门到精通视频教程

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 学习视频下载地址:https://pan.baidu.com/s/17NO3pG9hRL-RtU0bwa...

自学号
2018/06/02
0
0
Redis基础笔记(一)

Redis基础笔记 Redis基础笔记 事务 SORT 生存时间 任务队列 发布/订阅模式 Python中使用Redis 实际实例 管理 其他 1. 字符串类型 2. 散列类型 3. 列表类型 4. 集合类型 5. 有序集合 简介 安装...

Airship
2016/01/28
110
0
Docker Compose安装以及入门

Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用 Compose 简介 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排...

hotsmile
2019/03/19
78
0
《NoSQL数据库入门》书评赠书活动,国内首本NoSQL书

图灵教育&开源中国联合举办读样章赠图书活动,免费赠送《NoSQL数据库入门》10册! 本书核心:了解当今最炙手可热的NoSQL新型数据库技术;介绍memcached、Tokyo Tyrant、Redis、MongoDB;如何...

生气的散人
2012/06/19
5.2K
43

没有更多内容

加载失败,请刷新页面

加载更多

Python如何实现单例模式?其他23中设计模式python如何实现?

单例模式主要有四种方法:new、共享属性、装饰器、import。 # __ new__方法:class Singleton(object): def __new__(cls, *args, **kw): if not hasattr(cls, '_instance'): ......

每天学Python
3分钟前
0
0
在正则表达式的上下文中,“懒惰”和“贪婪”是什么意思?

有人可以用一种可以理解的方式解释这两个术语吗? #1楼 贪婪意味着您的表情将匹配尽可能大的组,懒惰意味着它将匹配最小的组。 对于此字符串: abcdefghijklmc 这个表达式: a.*c 贪婪的匹...

技术盛宴
7分钟前
0
0
springboot web 大文件上传源代码

一、 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传; 支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输...

东方雨
8分钟前
26
0
这五类人最适合转Web前端,有你吗?

互联网的高速发展促使互联网企业对于网站等页面的用户体验要求也越来越高,导致网站开发难度越来越大,于是一个新兴职业应运而生——web前端工程师。 因为互联网时代的高速发展,公司企业的迫...

梦想编程
15分钟前
35
0
vue打包后静态资源图片失效&&vue动态设置img的src不生效

vue打包后静态资源图片失效: 老版本中需要找到config/index.js,找build打包对象里的assetsPublicPath属性,默认值为/,更改为./就好了; 新版本中只有手动更改vue.config.js, 在里面配置p...

liulunsheng
28分钟前
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部