目录
NoSQL简介
NoSQL泛指非关系型的数据库,是为了解决大规模数据集合多重数据种类带来的问题,特别是大数据应用难题,与SQL语言不冲突。
主要特点:易拓展、大数据量、高性能、灵活的数据模型、高可用。
redis简介与安装
redis是一个免费开源的NoSQL产品。
redis使用ANSI C语言编写、是一个key-value 存储系统。它支持的存储类型有很多,包括string(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted set--有序集合)。
redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
redis是一个高性能的key-value NoSQL 产品,提供了很多语言开发接口,使用方便。
ubuntu下安装redis:
--切换到root账号进行操作
sudo apt update
sudo apt install redis-server
redis基本操作
1、启动服务端:redis-server
2、启动客户端:redis-cli(默认不支持中文)、redis-cli --raw(支持中文显示)
3、运行测试命令:ping
- 作用是测试与redis服务器是否连通
4、切换数据库:select 1(选择编号为1的数据库)
- 数据库没有名称,默认16个,通过0-15来标识
- 启动客户端后默认在0号数据库
5、redis键值对说明
- redis是key-value 的数据结构
- 每条数据都是一个“键值对”
- 键(key)的类型是字符串(string)
- 值(value)的类型分为5种:字符串string、哈希hash、列表list、无序集合set、有序集合zset
键命令
1、查找键
- 参数支持正则表达式,找到键,返回键名,找不到返回空
--格式
keys pattern(键名)
--例:查找所有键
keys *
2、判断键是否存在
- 如果存在返回1,不存在返回0
--格式
exists key
3、查看键对应的 value 类型
--格式
type key
4、设置键过期时间
- 以秒为单位
- 如果没有指定时间则一直存在,直到使用del 删除
--格式
expire key seconds
5、查看键有效时间
- 返回大于0,代表有效时间,单位:秒
- 返回-1为永久有效
- 返回-2为键不存在
--格式
ttl key
字符串string
1、增加、修改
- 如果设置的键不存在则为添加,如已经存在则为修改
- redis 中的字符串(string)可以用单引号、双引号、省略引号都行
--设置键值
set key value
--设置键值及过期时间,以秒为单位
setex key seconds value
--设置多个键值对
mset key1 value2 key2 value2 ......
--追加值(与原值拼接)
append key value
2、获取
--获取单个值,不存在返回null
get key
--获取多个值
mget key1 key2 ......
3、删除
--删除键及其对应值
del key1 key2 ......
哈希hash
1、hash介绍
- hash用于存储“键值对”集合
- 每个哈希中的键可以理解为字段(field),一个字段(field)对应一个值(value)
- hash中的值(value)类型为字符串(string)
- 同一个哈希中字段名(field)不可以重复
2、增加、修改
- 如果设置的键不存在则为添加,如已经存在则为修改
--设置单个字段
hset key field value
--设置多个字段
hmset key field1 value1 field2 value2 ......
3、获取
--获取指定键所有的字段
hkeys key
--获取一个字段的值
hget key field
--获取多个字段的值
hmget key field1 field2 ......
--获取所有字段的值
hvals key
--获取所有字段名包括字段对应的值
hgetall key
4、删除
--删除hash中指定字段,字段对应的值会一起删除
hdel key field1 field2 ......
--删除整个hash键及字段与值,使用del命令
del key1 key2 ......
列表list
1、list介绍
- 列表中的值(value)类型为字符串(string)
- 列表中每个值按照添加的顺序排序
2、添加
--从左侧插入值
lpush key value1 value2 ......
--从右侧插入值
rpush key value1 value2 ......
--在指定值的前或后插入值
linsert key before 或 after 值 插入的值
3、获取
- 返回列表里指定范围内的值
- 索引从左侧开始,第一个值的索引为0
- 索引可以是负数,表示从尾部开始计数,如:-1表示最后一个值
- start,stop 为要获取值的索引
--格式
lrange key start stop
--例:获取键key的列表所有值
lrange key 0 -1
4、修改
- 设置指定索引位置的值
- 索引从左侧开始,第一个值的索引为0
- 索引可以是负数,表示从尾部开始计数,如:-1表示最后一个值
--格式
lset key index value
5、删除
- 删除指定值
- 将列表中前count次出现的值移除
- count > 0,从头往尾删除
- count < 0,从尾往头删除
- count = 0,删除所有值
--格式
lrem key count value
无序集合 set
1、介绍
- 无序集合中值(value)类型为字符串(string)
- 集合里不允许有重复的值
- 对于集合里的值只能添加与删除,不能修改
2、添加
--集合中添加值
sadd key value1 value2 ......
3、获取
--返回所有值
smembers key
4、删除
--删除指定值
srem key value
有序集合 zset
1、介绍
- 有序集合中值(value)类型为字符串(string)
- 集合里不允许有重复的值
- 每个值都会关联一个分数(score),分数(score)可以为负数,通过分数(score)将值从小到大排序
- 对于有序集合里的值只能添加与删除,不能修改
2、添加
--集合中添加值
zadd key score1 value1 score2 value2 ......
3、获取
- 返回指定范围内的值
- start,stop 为值的下标索引
- 索引从左侧开始,第一个值的索引为0
- 索引可以是负数,表示从尾部开始计数,如:-1表示最后一个值
- withscores:同时获取值对应分数(score)
--格式
zrange key start stop [withscores]
--返回分数(score)在 min 和 max 之间的值
zrangebyscore key min max
--返回值value的分数(score)
zscore key value
4、删除
--删除指定值
zrem key value1 value2 ......
--删除分数(score)在指定范围之间的值
zremrangebyscore key min max