数据库 --nosql-

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

             六   redis 安装链接

             七  jedis 操作redis数据库

. 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
          



原文地址:https://www.cnblogs.com/ou-pc/p/8543492.html