Redis数据库

Nosql介绍

Nosql数据库主要有以下几种特点:泛指非关系型数据库,不支持SQL语法,存储结构和传统的关系型数据库完全不同,nosql数据库存储的类型都是key-value类型。

Redis简介

Redis是一种开源的使用ANSI,C语言编写的,支持网络,可基于内存可持久化的日志型,key-value数据库,提供多种语言的api。

Redis的特点

1.性能极高,读写速度快,读可以达到110000次/秒,写可以达到82000次/秒。
2.丰富的数据类型,Redis支持二进制案例的Strings,Lists,Hashes,Sets及Ordered Sets数据类型操作。
3.Redis的操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
4.Redis还有设置key过期时间等特性

Redis配置

redis数据库的配置文件在 /etc/redis/redis.conf下。主要核心配置如下:
1.绑定ip:127.0.0.1,默认端口:6379
2.守护进程执行:daemonize,推荐设置为True(守护进程执行)
3.数据文件路径:dbfilename.dump.rdb
4.日志文件:logfile  /var/log/redis/redis-server.log
5.数据库:16个数据库(以索引的形式对应,0~15号库)

Redis命令

服务端命令:redis-server
客户端命令:redis-cli(连接redis)
运行测试命令:ping(响应为pong则测试通过)
切换数据库:select 数据库对应索引

数据结构

redis是一种key-value的数据结构,每条数据都是一个键值对,键的类型是字符串,需要注意的是键不能重复。
值的类型主要有五种:字符串(string),哈希(hash),列表(list),集合(set),有序集合(zset)。

String类型

字符串类型是redis数据库中最为基础的数据存储类型,他在Redis中式二进制安全的,这就一意味这可以接受任何格式的数据,如JPEG 图像和json的描述信息等,在redis中字符串类型的value最多可以容纳的长度为512M。
保存:redis中如果设置的键不存在那么默认为添加,如果已经存在就是对原有数据的修改。
设置键值:set key value
设置键值以及过期时间,以秒为单位:setex key seconds value
设置多个键值:mset key1 value1 key2 value2
追加值:append key value
根据键获取值:get key
根据多个键获取值:mget keys…

键命令

查找键(支持正则表达式):keys *
判断键是否存在,存在返回1,不存在为0:exists key
查看键对应的值类型:type key
删除键以及对应的值:del keys
设置过期时间(以秒为单位,如果没有设置则一直存在,直至del):expire key seconds
查看有效时间:ttl key

hash类型

hash类型用于储存对象,对象的结构为属性,值,值的类型为string
设置单个属性:hset key field value
这里需要注意的是可能会出现错误:
MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
大致意思是目前redis被配置为保存数据库快照,但是它目前不能持久化到硬盘,用来修改集合数据的命令不能用。意思就是强制关闭redis数据库快照导致不能持久化。
解决方案:运行config set stop-writes-on-bgsave-error no后,关闭配置项stop-writes-on-bgsave-error。
设置多个属性:hmset key field1 value1 field2 value2
获取指定键的所有属性:hget key
获取一个属性的值:hget key field
获取多个属性的值:hget key field1 field2
获取所有属性的值:hvals key
删除整个hash键及值:hdel key field1 field2…
删除某一个属性:hdel key value

list类型

注意,list类型的元素类型为string,数据有顺序。
从左侧插入数据:lpush key value1 value2 value3
从右侧插入数据:rpush key value1 value2 value3
在指定元素的前面和后面插入数据:linsert key before或after 现有数据,新数据
获取列表指定范围内的元素:lrange key start stop(start,stop为元素的下标索引,从左侧开始,第一个为0,可以为复数,表示从右侧开始计数,最右侧为-1)
设置指定索引位置的元素值:lset key insert value
删除指定元素:lrem key count value(将列表中前count次出现的value删掉,count>0从头至尾删除,count<0从尾至头删除,count=0删除所有)

set类型

无序集合,元素为string类型,元素具有唯一性,不重复,没有修改操作
添加元素:sadd key value1 value2 value3
获取所有元素:smembers key
删除指定键值:srem key
删除指定键的指定值:srem key value

zset类型

有序集合,元素类型为string,元素具有唯一性,不能重复,每个元素都会关联一个double类型的score,表示权重,按照权重从小到大排序,没有修改操作。
增加数据:zadd key score1 member1 score2 member2
获取指定范围内的数据:zrange key start stop
获取score值在min和max之间的成员:zrangebyscore key min max
返回成员member的score值:zscore key member
删除指定元素:zrem key member1 member2
删除权重在指定范围内的元素:zremrangebyscore key min max

与Python进行数据交互

StrictRedis对象法:
from redis import StrictRedis
#连接redis数据库,里面很多信息已经默认定好了,注意,什么参数不传会导致在redis中读取出来的数据是二进制类型,因为其中有个缺省参数为decode_responses=False,修改了即可。
redis_cli = StrictRedis()
然后就可以通过redis_cli完成各种读写操作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值