Python——数据库——非关系数据库(Nosql)-redis
来源:互联网 发布:新东方 网络家教 编辑:程序博客网 时间:2024/06/06 01:15
常见[NoSQL]数据库
列存储:Hbase、Cassandra、Hypertable
文档存储:MongoDB、CouchDB
k-v存储:TokyoCabinet、BerkeleyDB、MemcacheDB、redis
对象存储:Neo4J、Versant
Xml数据库:BerkeleyDB、BaseX
redis:存储在内存中的键值对,主要用于做缓存。
一、redis的安装
官网:redis.io
redis命令大全中文版网站:redis.cn
1.Windows系统下的安装
①可执行文件:按照提示安装,一直点击下一步即可
②zip包:解压缩,配置路径,将bin目录的路径放置到path中,打开命令行切换到redis.conf文件所在路径,通过redis-server ./redis.windows.conf启动,redis-cli 进入redis
2.linux系统下的安装
①apt / apt-get install redis-server
②下载zip压缩包,上传到linux系统,解压压缩包,使用make命令编译redis源代码(c++),等待结束后,使用make install 命令 ,安装编译后的文件。使用redis-server ./redis.conf (当前路径)启动 。使用vim 命令修改配置文件,vim redis.conf文件,将bind 127.0.0.1注释掉,/daemomize no 修改为yes,(后台进程、守护进程),保存退出,重启服务,sudo service redis-server restart
登录:先输入命令redis-server ./redis.conf ,启动redis,然后输入redis-cli 登录,如下图:
3.linux系统下redis的操作
select 数据库名:进入某数据库,默认16个数据库,下标(0~15),进入下标为0的数据库。
key<键>的数据类型:字符串
value<值的类型>:string字符串、hash哈希、list列表、set集合、zset有序集合
根据值的类型的不同,分别介绍相应的redis操作
3.1 字符串类型:
根据值的类型的不同,分别介绍相应的redis操作
(1)赋值
①设置或获取一对key-value的值:
set :设置key-value的值, get:获取某个key对应的值
②设置或获取多个key-value的值:
mset :设置key-value的值, mget:获取某个key对应的值
(2)修改数据
①为某个键的值依次增加1,(incr key),依次减去1(decr key)
②为某个键的值依次增加指定的数值,(incrby key num ),依次减去指定的数值(decrby key num )
(3)为键值对设置失效时间(set expire)
①setex key seconds value(设置key的同时设置有效时间)
ttl key查看失效时间,-2表示已经失效,-1表示永久有效,其他表示还有多长时间失效。我们还没有为age设置失效时间,这是ttl age,返回的就是-1
②expire key seconds (为某个已经存在的key设置有效时间)
即setex相当于set 和expire
②ttl key,查看某个键值对的失效时间,-1表示永久存储,-2表示已经失效,其余的表示还有多长时间失效。以上例子已经说明,不再赘述。
(5)删除key的值
①del key [key......] : 删除一个或多个key的值
②也可以通过为该key设置较短的生效时间删除key:expire key second,如将生效时间设置为1s,则1s后该key-value值自动消失。
(6)关于Key的各种操作操作(无论何种数据类型,通用,专门针对key的操作)
① del key:根据key删除键值对
② expire key seconds:给key设置过期时间
③ ttl key:查看键的有效时间
以上3种已经在上面展示过了,请看以下操作的实例: ④ keys pattern:查找键,支持正则 keys * 为查找所有的key
⑤ exists key:查找键是否存在,存在返回1(即true),否则返回0(即false)
⑥ type key:查看键对应的值的类型 ,这里介绍的是值为字符串类型的,所有目前所有的key对应的值类型都为字符串,若是hash、list、set、zset的类型也会相应返回对应的类型,后面会介绍。
3.2 hash :用于存储对象key,该对象的值对应的是多个键值对,类似与字典,field value [field value]...
(1)赋值
①为一个对象(user1)设置一个属性(name)及值(value):hset key field value ;
获取一个属性值:hget key field。(这里set/get前面加一个h,表示hash)
例如:hset user1 name “rulai”/ hget user1 name
②设置多个属性值:hmset key field value [field value......];
获取多个属性值:hmget key field [field......]
(2)
①获取所有的键值对: hgetall key ,在这里key表示一个对象,name、age等为属性
②获取某个对象所有的属性名称:hkeys key(hkeys的keys相当于field,后面的key相当于对象名称)
③获取某个对象所有的属性值:hvals key
(4)删除一个或多个属性(field)的值: hdel key field[field]...
(5)获取对象长度:hlen key (即key中的属性个数)
(6)判断某个属性是否存在:hexists key field 返回值为0表示不存在,1表示存在
(7)获取属性长度:hstrlen key field
3.3 List列表 :用于记录/保存多个有序的数据
①在列表头部增加一个或多个数据:lpush key value [value](key为列表名)
因为从头部增加的,所以刚好被反序保存在list1中
②在列表尾部增加一个或多个数据:rpush key value[value],正序增加
③在一个元素前/后插入数据:linsert key before/after privot value(privot表示在列表中的某个值前/后插入)
④设置(修改)指定索引位置的值:lset key index value
⑤删除并且获取key对应的list的第一个元素:lpop key
⑥删除并且获取key对应的list的最后一个元素:rpop key
⑦查询某个范围内的key对应的list的值:lrange key start end。
⑧获取列表长度: llen key
⑨获取列表中索引对应的元素:lindex key index
⑩获取列表中start和stop组成的新列表,即截取目标列表:ltrim key start end (这里l表示列表list)
5.Set集合:用于存储不重复的无序的数据
①添加多个数据到集合中:sadd key value[value](key表示集合名称),数据是无序的。
②获取key集合中所有的数据:smembers key,如上图所示。
③判断value是否在集合key中存在:sismember key value (存在返回1,不存在返回0)
④获取key集合中元素的个数:scard key
⑤多个集合的交集:sinter key[key...]
差集:sdiff key[key...]
并集:sunion key[key...]
6.Zset集合:有序的set集合(一般将list的数据放置在set中去重,再放置在zset中变成有序)
①添加多个带权重(score)的数据到zset中:zadd key score value[score value ...](若多个元素的权重相等,则按照ASCII编码排序,权重数字越小,优先级越高)
②获取指定范围中所有元素:zrange key start end,如上图所示。
③返回集合中元素个数:zcard key
④返回score值范围内的数据,也就是权重范围内的元素个数:zcount key min max
⑤返回集合中的某一个元素(member)的权重(score)score: zscore key member
- Python——数据库——非关系数据库(Nosql)-redis
- 谈谈NoSQL——非关系型数据库概览
- 29-SpringBoot——核心-非关系型数据库NoSQL
- Nosql数据库——redis(一)
- NOSQL非关系数据库。
- NoSQL数据库 — MongoDB和Redis
- Nosql笔记(一)——关系型数据库回顾
- 了解非关系型数据库(NoSQL)
- 非关系型数据库(NoSql)
- Nosql数据库——redis(二)简介和安装
- Nosql数据库——redis(三)数据类型
- Nosql数据库——redis(四)数据类型
- Nosql数据库——redis(五)主从复制
- NoSQL数据库探讨之一 ——为什么要用非关系数据库?
- NoSQL数据库探讨之一 ——为什么要用非关系数据库?
- NoSQL数据库探讨之 —— 为什么要用非关系数据库?
- NoSQL非关系数据库简介
- NoSQL非关系型数据库
- 搭建windows下openfire调试环境
- 电脑adb驱动安装成功但识别不了adb设备
- 【杂谈】从零开始组建团队开发一款APP的人力成本以及时间成本解析
- 指针与二维数组
- hadoop start journalnode小坑
- Python——数据库——非关系数据库(Nosql)-redis
- 黑客内参详解领域驱动:如何从领域驱动开发当中获益的
- 【NOIP2016提高A组集训第14场11.12】随机游走——期望+树形DP
- 2017.11.1工作日记
- org get请求
- 14. Longest Common Prefix
- EEPROM
- 欧拉序
- Android的多渠道打包方式