Redis
NOSql
- 概念:指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称
- 常见的NOSql数据库:
- 键值数据库:可以理解为一个HashMap,支持SET/GET操作
- 值可以是:string,list,set,hash
- 列式数据库:每行列数可变的数据库
- 文档数据库:键值对形式存储
- 文档格式可以是:XML,YAML,JSON,BSON,二进制文件
- 图形数据库:以图为数据模型来存储数据,图来表示对象的集合以及关系
- 键值数据库:可以理解为一个HashMap,支持SET/GET操作
Redis
简介
- Redis属于键值数据库
- 它支持存储的类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集,而且这些操作都是原子性的
- redis支持各种不同方式的排序,数据都是缓存在内存中
- redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步
特点
- 高性能,持久存储,适应高并发的应用场景
- 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型
- Redis数据库完全在内存中,使用磁盘仅用于持久性
- Redis可以将数据复制到任意数量的从服务器
- Redis操作是原子性的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值
- Redis是单线程
安装
核心文件配置
服务启动
- 启动redis服务器服务
- 在cmd中输入:redis-server.exe redis-windows.conf
- 启动redis客户端服务
- 在cmd中输入:redis-cli.exe -h ip地址 -p 端口 -a 密码
- 可视化客户端工具:**下载RedisDesktopManager**
使用命令
string
介绍 | 命令 |
---|---|
新增或修改key的值 | set key value [px 毫秒数] [ex 秒数] [nx] |
获取key的值 | get key |
为key设置一个新的值,并且返回旧的值 | getset key value |
将已存在的key中的value进行+1(value必须为数值型) | incr key |
将已存在的key中的value进行-1(value必须为数值型) | decr key |
将已存在的key中的value进行加上指定值(value必须为数值型) | incrby key increment(需要增加的值) |
将已存在的key中的value进行减去指定值(value必须为数值型) | decrby key increment(需要减少的值) |
list
介绍 | 命令 |
---|---|
将一个或多个值插入到列表头部 | lpush key value1 value2… |
移除并获取列表的第一个元素 | lpop key |
获取列表长度 | llen key |
通过索引获取列表中的元素 | lindex key index |
通过索引设置列表元素的值 | lset key index value |
获取列表指定范围内的元素 | lrange key start stop |
Hash
介绍 | 命令 |
---|---|
将哈希表key中的字段field的值设置为value | hset key fleld value |
获取key中field的值 | hget key fleld |
同时将多个field-value设置到哈希表key中 | hmset key fleld1 value1 fleld2 value2 |
获取所有给定字段的值 | hmget key fleld1 fleld2 |
获取哈希表中所有的字段和值 | hgetall key |
获取哈希表中所有的字段 | hkeys key |
获取哈希表中所有的值 | hvals key |
查看哈希表中指定key中指定的字段是否存在 | hexists key fleld |
删除哈希表中指定key中指定的字段 | hdel key fleld |
Set
介绍 | 命令 |
---|---|
向集合添加一个或多个成员 | sadd key member1 member2 |
获取集合中所有的成员 | smembers key |
删除并返回集合中的一个随机元素 | spop key |
获取给定集合的差集 | sdiff key1 key2 |
获取指定的集合的差集并存储至destination指定的key中 | sdiffstore destination key1 key2 |
获取给定集合中的交集 | sinter key1 key2 |
获取指定集合的交集并存储至destination指定的key中 | sinterstore destination key1 key2 |
获取给定集合中的并集 | sunion key1 key2 |
获取指定集合中的并集并存储至destination指定的key中 | sunionstore destination key1 key2 |
zSet
介绍 | 命令 |
---|---|
向集合添加一个或多个成员及分数,或者更新成员分数 | zadd key score1 member1 score2 member2 |
有序集合中对指定成员增加increment值 | zincrby key increment member |
返回有序集合中指定索引区间的成员 | zrange key start stop |
返回指定分数区间的成员升序排列 | zrangebyscore key min max |
返回指定索引区间的成员降序排列 | zrevrange key start stop |
返回指定分数区间的成员降序排列 | zrevrangebyscore key max min |
返回指定成员的排名,从0开始 | zrevrank key member |
返回指定成员的分数 | zscore key member |
Key
介绍 | 命令 |
---|---|
获取当前实例下所有的key | keys * |
删除一个或多个key | del key1 key2… |
判断指定key是否存在 | exists key |
设置key超时时间,过时删除 | expire key seconds |
获取key的类型 | type key |
切换库(0-15) | select index |
持久化机制
RDB
- 按照持久化测量定期持久化数据到磁盘文件,存的是数据(key-value)
AOF
- 每秒持久化redis命令到磁盘文件,定期做文件压缩
Jedis
- Jedis是与java连接Redis的驱动包
- 下载地址:**Jedis和Commons Pool**
1 |
|
1 |
|