Redis入门之一简介
来源:互联网 发布:恐怖海峡知乎 编辑:程序博客网 时间:2024/06/06 02:42
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>
通过select命令切换数据库
不支持数据库重命名
一个空的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) 1redis 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
- Redis入门之一简介
- Redis入门很简单之一【简介与环境搭建】
- Redis入门很简单之一【简介与环境搭建】
- Redis入门很简单之一【简介与环境搭建】
- Redis入门很简单之一【简介与环境搭建】
- Redis入门很简单之一【简介与环境搭建】
- Redis入门很简单之一【简介与环境搭建】
- Redis入门很简单之一【简介与环境搭建】
- Redis入门很简单之一【简介与环境搭建】
- Redis入门之一
- Redis入门简介
- redis入门简介
- Redis简介和入门
- Redis java入门之一:安装
- 【Android 入门之一】android简介
- cas入门之一 cas 简介
- OPENWRT入门之一------openwrt简介
- Redis 简介与使用入门
- 半半歌
- NoSQL开篇——为什么要使用NoSQL
- Redis进阶 ----事务
- 内部类
- c++智能指针详解
- Redis入门之一简介
- wegw
- 第5章 表达式 课后习题
- jquery获取复选框的值
- 判断app是否安装百度地图,并启动导航 ios
- linux命令eval的用法
- Hbase的regionServer无法启动报ClockOutOfSyncException解决方法
- js和jq中的绑定事件
- 数据结构实验--------二叉树(Binary Tree)