Redis数据库
文档地址:http://redisdoc.com/
一、NoSQL
NoSQL(not only SQL)是对于不同于传统的关系型数据库的统称
特点:
-
不支持SQL语法
NoSQL 的世界里,没有通用的语言,每个NoSQL数据库都有自己的语法以及擅长的业务场景
-
读写性能高
大数据下表现优秀
-
灵活的数据模型
NoSQL的存储方式灵活,可以是JSON文档、键值对或其它方式
二、Redis简介
Remote DIctionary Server(Redis) 是一个由意大利人Salvatore Sanfilippo开发的内存高速缓存数据库,是高性能的键值对(key-value)存储数据库
开源,C语言编写,基于内存也可以持久化的日志型key-value数据库
特性:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
- 数据结构丰富,Redis不仅仅支持简单的key-value类型的数据(区分大小写),同时还把value分为list,set,zset,hash等数据结构存储,(数据类型中全是二进制字符串)
- 性能高,存储速度快,在服务器中常用来存储一些需要频繁调取的数据,一般用来做缓存
三、Redis的库级操作
1.连接redis:
redis-cli
2.退出redis:
exit
3.切换数据库:
Redis的数据库没有名称,默认16个,通过0-15来标识,连接Redis默认选择第一个数据库
select n
4.操作服务端:
service redis start/stop/restart
5.默认端口
6379
四、Redis数据类型的使用
1. key的全局操作
对Redis所有的数据类型适用:
- 查看所有的key:
keys *
- 删除:
del key
- 检查是否存在 :
exists 'key'
存在返回1,不存在返回0 - 改名:
rename oldkey newkey
- 设置过期时间:
expire key seconds
秒 - 查看过期时间:
ttl key
不存在返回 -2,永久存在返回-1,否则返回整数秒 - 移除过期时间:
persist key
- 返回数据类型
type key
2.五大数据类型
(1).字符串(string)
是redis的最基本的数据类型,一个key对应着一个value
- 设置数据:
set key value
没有key就添加,有key就修改 - 查看:
get key
- 追加:
append key value
追加到原有的数据后面,字符串的拼接 - 删除:
del key
(2).哈希表(hash)
Redis hash 是一个string 类型的field和value的映射表,hash特别适用存储对象
理解为,键值都是字符串的字典
key --> {
field: value,
field1: value1,
···
}
-
添加数据:
hmset key field value [field1 value1 ....]
一次性添加多值,没有就创建,有就修改hmset person 'name' 'zhihao' 'age' '18' ---------------------------------------------- {'name': 'zhihao', 'age': '18'}
-
查看hash表中某个字段的值:
hget key field
-
查询hash表中所有的字段和值:
hgetall key
-
查看所有的value:
hvals key
-
查看所有的field:
hkeys key
-
删除某个字段:
hdel key field
(3).列表(list)
简单的字符串列表,按照插入顺序排列,在插入数据时,如果键不存在,则创建该键
-
添加数据
-
头部添加(左边)
lpush key value [value1 ...]
-
尾部添加(右边)
rpush key value [value1 ...]
-
指定的值前/后插入数据:
前:
linsert key before value new_value
后:
linsert key after value new_value
-
-
查看数据:
lrange key start end
获取列表指定范围的元素,包含start,和end,start从0开始 -
查看指定索引数据:
lindex key index
-
修改指定索引数据:
lset key index value
-
删除
- 左删除:
lpop key
- 右删除:
rpop key
- 左删除:
-
获取列表长度:
llen key
(4).集合(set)
字符串类型的无序集合,集合的成员是唯一的,无重复数据
- 添加数据:
sadd key member [member1 ...]
key存在则修改,不存在则添加 - 查询所有成员:
smembers key
- 指定删除:
srem key member [member1 ....]
移除key中的一个或多个元素 - 随机删除:
spop key
(5).有序集合(sorted set)
有序集合和集合一样也是字符串类型元素的集合,且不允许重复成员
有序集合每个元素都会关联一个double类型的分数(score),redis正是通过score来为集合中的成员进行从小到大的排序
有序集合的成员是唯一的,但是score却是可以重复的。score可以是整数,也可以是双精度的小数
-
添加数据:
zadd key score member [score1 member1 ...]
将一个或者多个元组及其值加入到有序集合,key不存在则创建,member存在则修改socre -
通过索引查看:
zrange key start stop
-
通过score查看:
zrangebyscore key min max
返回指定socre区间的集合元素 -
返回成员的score:
zscore key member
-
返回集合长度:
zcard key
-
指定删除:
zrem key member [member1 ...]
-
通过索引删:
zremrangebyrank key start stop
移除有序集合key中,区间为索引start到stop的,包含start和stop在内。 -
通过score删:
zremrangebyscore key max min
移除有序集合key中,区间为score, min到max的的值,包含min和max在内。