no sql 数据库 -- redis 应用
Posted 周无极
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了no sql 数据库 -- redis 应用相关的知识,希望对你有一定的参考价值。
1 .入门概述
一 、是什么 (who)
(1)redis remote dictionary server(远程字典服务器)?
是完全开源免费的,用C语言编写的,遵守Bsd协议,是一个高性能的(key value)分布式内存数据库
基于内存运行并支持持久化的NOSQL数据库,是当前最热门的NOSQL数据库之一,也被人们成为数据节后服务器
(2)redis与其他key—values缓存产品有以下三个特点。
A . redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的话可以再次加载进行使用
B . redis不仅仅支持简单的key—value类型的数据,同是还提供 list set zset hash等数据结构的存储
C . redis支持数据的备份,几master—slave模式的数据备份
二能干嘛 (what)
(1)内存存储和持久化:redis支持异步将内存中数据写到硬盘上,同是不影响继续服务取最新N个数据的操作,如:
(2)可以将最新的10条评论的ID放在redis的list集合里面模拟类似于httpsession这种需要设置过期时间的功能
(3)发布 订阅消息系统
(4)定时器 计数器
三 去哪下(where)
http:// redis.io/
http://www.redis.cn/
四 怎么玩
数据类型 基本操作和配置
持久化和复制 ROB/AOP
事务的控制
复制
五 解决java 连接 vmware redis 连不上问题?
(1).关闭防火墙 service iptables status
(2).修改redis.conf配置文件,将端口127.0.0 注释掉,这样任何ip都可以访问
(3).修改redis.conf配置文件, protected-mode yes
(4).修改 redis.conf配置文件,加上密码 requirepass yes
2 . redis 命令
一 redis 5大数据类型 redis命令大全
(1).默认16 个数据库 ,类似数组下表从零开始,初始默认使用零号
(2). select 命令 切换数据库 select 0
(3) DBsize 查看当前数据库的key的数量
(4).keys * 查看当前库的所有key
(5). flushdb 清除点当前库的所有数据
(6). flushall 清除所有的库的所有数据
(7). exists k1 判断在库里 是否有当前key
(8). move 键名 库名 把key和values 剪切到 库里
(9). ttl 注意英文l 键名 查看还有多少秒过期,-1 表示永不过期,-2表示已过期
(10).type key 查看你的key 是什么类型
(11)expire 键名 秒 表示给key赋值过期时间 单位为妙
二、string类型数据
string 是redis 最基本的类型,你可以理解成与memcache一模一样的类型,一个key对应一个value
string 类型是二进制安全的。意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象
string 类型是redis最基本的数据类型,一个redis中字符串value最多可以是521m
(1) set/get/del 分别是添加 查询 删除 追加 截取
(2) append 键名 字符串 追加字符串
(3) strlen 键名 查看key的长度
(4) incr 键名 执行加上 1 (value 必须是数)
(5). incrby key increment 递增倍数
(6). decr 执行减去 1
(7). decrby 递减倍数
(8). getrange 键名 开始角标 结束角标 获取指定区间范围内的值
(9). setrange 键名 开始角标 字符串 设置指定区间范围内的值
(10). setex 键 妙值
(11). setnx key values 如果有key 赋值失败
(12). mset 添加多个 mget 查询多个
(13). msetnx 添加多个 如果添加key中有一个重复的 赋值失败
三 、 list (列表)
redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部的(右边)
它的底层实际是个链表
(1). lpush key []数组 是先进后出
(2). rpush key []数组 是先进先出
(3). lrang key start end -1代表所有 查询list
(4). lpop key 栈定出去一个 移除顶部的一个
(5). rpop key 栈底出去一个 移除底部的一个
(6). lindex key 角标位置 按照索引下标获得元素(从上到下)
(7). llen key 显示list 长度
(8). lrem key 删除 N 个value
(9). ltrim key 开始index 结束index 截取指定范围的值后再赋值给key
(10).rpoplpush 源列表 目的列表
(11).lset key index valus 表示更换角标 为 valus值
(12). linsert key before 值1 插入角标 前 的values值
(13). linsert key after 值1 插入角标 后 的values值
(14). 它是一个字符串链表,left right都可以插入
如果键不存在,创建新的链表 如果键已存在,新增内容
如果值全部移除 对应的键也就消失了
链表的操作无论是头和尾效率都极高,但如是对中间元素进行操作,效率就很惨淡了。
四、 set (集合)
redis的set 是string类型的无序集合,它是通过hashtable实现的
(1). sadd key [] 添加数据 添加重复数据只能有一个
(2).smembers key 查询所有key 的集合
(3).sismember key 判断是否有key 值
(4).scard key 获取集合里面的元素个数
(5).srem key values 删除集和中元素
(6).srandmember key 某个整数(随机出几个数)
(7).spop key 随机出栈
(8).smove key1 key2 在key1 里某个值 作用是将key1 里的某个值赋给key2
(8).数学集合类
差集 sdiff set1 set2 交集 sinter 并集 sunion
五 hash(哈希)
redis hash 是一个键值对集合
redis hash 是一个string类型的field和valus的映射表,hash特别适合用于存储对象
类似java 里面的map<string,object>
(1). hset key field values 添加
(2). hge t key field 查询
(3). hmset key field values ( field values 、、、) 添加多个
(4). hmg et key field(field、、、、、)得到多个
(5). hgetall key 得到key values key values
(6). hdel key field 删除
(7). hlen key 查询长度
(8). hexists key field 判断是否有filed
(9). hkeys key名字 /hvals key 名字 查询集合
(10). hincreby key field increment 递增数字 hincreby hash2 k4 2
(11). hincrebyfloat key field increment 递增小数
(12). hsetnx key field values 添加不重复的数据
六 zset (有序集合)
redis zset和set 一样也是string 类型元素的集合,且不允许重复的成员
不同的是每个元素都会关联一个double类型的分数
redis 正式通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score) 却可以重复
(1). zadd key score1 v1 score2 v2 添加
(2). zrange key 0 -1 查询所有
(3). zrangebyscore key 开始score 结束score 截取包含当前的分数 zrangebyscore zset1 (1 (2 不包含当前的值
(4). zrangebyscore zset1 1 2 limit 0 1 分页
(5). zrem key 某score下对应的values值, 删除元素
(6). zcard key 查询集合大小
(7). zcount key score 区间 统计区间大小
(8). zrank key values 获取下标值
(9). zscore key 对应值 获得分数
(10). zrevrank key values值 逆序获取下标值
(11). zrevrange zset1 0 -1 逆序获取数据值
(12). zrevrangebyscore key 结束分数 开始分数
三.snapshotting 快照
(1) rdb redis database 缩写 持久化文件到dump.rdb
(2) aof append only file 缩写 appendonly.aof 配置文件默认 no
aof 文件如果错误 可以用redis-check-aof --fix appendonly.aof
四.redis 实务
discard 取消实务,放弃执行事务块内的所有命令 放弃事务
exec 执行所有事务块内的命令 提交事务 有一条语句错误 侧执行错误
multi 标记一个事务内的命令 开启事务
unwatch 取消watch命令对所有key的监事
watch key 监事一个 ,如果早事务执行之前key 被其他命令所改动 ,那么事务将被打断
五.集群
(1).拷贝多个redis.conf
(2).开启daemonize yes
(3).pid 文件名字
(4). 指定端口
(5).Log 文件名字
(6).Dump.rdb
以上是关于no sql 数据库 -- redis 应用的主要内容,如果未能解决你的问题,请参考以下文章