redis 学习整理笔记

[ 由于水平有限,欢迎指正。]

[Redis 作者]

     叫Salvatore Sanfilippo,来自意大利的西西里岛,现在居住在卡塔尼亚。目前供职于Pivotal公司。他使用的网名是antirez。


[Redis 特点]

 Redis从它的许多竞争继承来的三个主要特点:

   1) : Redis数据库完全在内存中,使用磁盘仅用于持久性。

   2) : 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型。

   3) : Redis可以将数据复制到任意数量的从服务器。


[Redis 优势]

    1) : 异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。

    2) : 支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,我们 

            知道哪些问题是可以处理通过它的数据类型更好。

    3) : 操作都是原子性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。

    4) : 多功能实用工具:Redis是一个多实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅),任何短暂的数据,应用程序,

            如Web应用程序会话,网页命中计数等。


[数据类型]   redis支持五种类型的数据类型: string hash list set zset

  分别介绍redis的五种数据类型:

    1) : string(字符串)

           string是最简单的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似。但它的功能

               更丰富。

    2) : list是一个链表结构

           主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字。

           主要用在: 微博TimeLime, 消息队列, 关注列表, 粉丝列表等

    3) : 哈希

           Redis的哈希是键值对的集合。 Redis的哈希值是字符串字段和字符值之间的映射,因此它们被用来表示对象

           用在: 用户浏览数

    4) : set 集合

           Redis的集合是字符串的无序集合。在Redis您可以添加,删除和测试文件是否存在,在成员O(1)的时间复杂度。

           主要用在: 共同好友


    5: zset 有序集合

           Redis的有序集合类似于Redis的集合,字符串不重复的集合。不同的是,一个有序集合的每个成 员用分数,以便采取有序set命令,从最小的到最大

               的成员分数有关。虽然成员具有唯一性,但分数可能会重复。

           主要用在: 排行榜(顺序性)


[部分整理]

六 命令总结

    0) : redis安装/服务器启动/客户端启动 的命令

        - redis 安装:   brew install redis

        - redis服务器的启动  :  redis-server

        - redis客户端的启动 :  redis-cli

    1) : 链接操作相关命令

        - qiut => 关闭连接

        - auth redis设置的密码   =>  简单密码认证

    2) : 对value操作的命令

        - exists 键名  => 判断键名是否存在

        - del 键名  =>  删除一个指定键名的数据

        - type 键名  =>  返回值得类型

        - keys *  => 返回所有的key

        - dbsize  =>  返回当前数据库中所有key的数目

        - expire key 存活时间  =>  设置key的存活时间

        - ttl key  => 获取key的存活时间

        - select [0-15]  => 选择数据库 默认0数据库

        - info  => 获取服务器的信息和统计

    3) : 设置redis安全密码

        - 去配置文件中 vim /usr/local/etc/redis.conf 中添加 requirepass redis密码

    4): 对String操作的命令

        - set (key value) => 给数据库中名称为key的string赋予值value

        - get( key) => 返回数据库中名称为key的string的value

        - mget(key1, key2,…, key N) => 返回库中多个string(它们的名称为key1,key2…)的value

        - setnx(key, value) => 如果不存在名称为key的string,则向库中添加string,名称为key,值为value

        - setex(key, time, value) => 向库中添加string(名称为key,值为value)同时,设定过期时间time

        - mset(key1, value1, key2, value2,…key N, value N) => 同时给多个string赋值,名称为key i的string赋值value i

        - msetnx(key1, value1, key2, value2,…key N, value N) => 如果所有名称为key i的string都不存在,则向库中添加string,名称key i赋值为value i

        - incr(key) => 名称为key的string增1操作

        - incrby(key, integer) => 名称为key的string增加integer

        - decr(key) =>名称为key的string减1操作                 

        - decrby(key, integer) => 名称为key的string减少integer

        - append(key, value) => 名称为key的string的值附加value

        - substr(key, start, end) => 返回名称为key的string的value的子串

    5) : 对List操作的命令

        - rpush( key value )=> 在名称为key的list尾部添加一个值为value

        - lpush (key value) => 在名称为key的list头部添加一个值为value    

        - llen( key)  => 返回名称为key的长度

        - lrange (key start end)  => 返回名称为key的list中start至end之间的元素(end 为-1 表示返回key对应的所有数据)

        - ltrim(key, start, end) => 截取名称为key的list,保留start至end之间的元素             

        - lindex(key, index) => 返回名称为key的list中index位置的元素

        - lset(key, index, value) => 给名称为key的list中index位置的元素赋值为value

        - lrem(key, count, value)=>删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从 头至尾删除count个值为

              value的元素,count<0从尾到头删除|count|个值为value的元素。

        - lpop(key):返回并删除名称为key的list中的首元素

        - rpop(key) => 返回并删除名称为key的list中的尾元素                      

        - blpop(key1, key2,… key N, timeout):lpop命令的block版本。即当timeout为0 时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果

               timeout>0,则 遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作        

       - brpop(key1, key2,… key N, timeout):rpop的block版本。参考上一命令。          

       - rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

    6) : 对Set操作的命令

       - sadd (key member ) => 向名称为key的set中添加元素member

       - smembers (key)   =>  返回名称为key的集合

       - srem (key member ) => 删除名称为key的set中的元素member

       - scard( key)  =>  返回名称为key的set的集合个数

       - sinter( key1 key2)  => 求名称为key1和名称key2的交集

       - sinterstore( dstkey key1 key2)  => 求交集并将交集保存到集合dstkey中

       - sismember(key, member)  => 测试member是否是名称为key的set的元素

       - sunion(key1, key2,…key N)  => 求并集

       - sunionstore(dstkey, key1, key2,…key N) => 求并集并将并集保存到dstkey的集合                  

       - sdiff(key1, key2,…key N) :求差集

       - sdiffstore(dstkey, key1, key2,…key N) => 求差集并将差集保存到dstkey的集合

    7) : 对zSet操作的命令

       - zadd (key score member) => 向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序

       - zrange (key start end)  => 返回名称为key的zset(元素已按score从小到大排序)中的                index从start到end的所有元素

       - zrevrange( key, start, end) => 返回名称为key的zset(元素已按score从大到小排序)中的            index从start到end的所有元素

       - (zrem key, member)  => 删除名称为key的zset中的元素member

       - zincrby (key, increment, member) => 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,

                其score的值为increment

       - zrank( key, member )=> 返回名称为key的zset(元素已按score从小到大排序)中member元素的rank(即index,从0开始),若没有member元素,

                返回“nil”    

       - zrevrank (key, member 0 => 返回名称为key的zset(元素已按score从大到小排序)中member元素的rank(即index,从0开始),若没有member元

              素,返回“nil”

    8) : 对Hash操作的命令

       - hmset( key, field,value) => 向名称为key的hash中添加元素field<—>value [user:1键名]

             例如: hmset user:1 username daxia gender 1 age 23

       - hget (key, field) => 返回名称为key的hash中field对应的value

            例如: hget user:1 username

       - hmget( key, field1, …,field N) => 返回名称为key的hash中field i对应的value

            例如: hmget user:1 username gender

       - hgetall (key )=> 返回名称为key的hash中所有的键(field)及其对应的value

       - hvals( key ) => 返回名称为key的hash中所有键对应的value

       - hkeys (key ) => 返回名称为key的hash中所有键

       - hlen  (key)  => 返回名称为key的hash中元素个数

       - hmset( key, field1, value1,…,field N, value N) => 向名称为key的hash中添加元素field i<—>value i

       - hincrby (key, field, integer) => 将名称为key的hash中field的value增加integer

       - hexists (key, field )=> 名称为key的hash中是否存在键为field的域

       - hdel (key, field )=> 删除名称为key的hash中键为field的域

   9) : 持久化

       - save:将数据同步保存到磁盘

       - bgsave:将数据异步保存到磁盘

       - lastsave:返回上次成功将数据保存到磁盘的Unix时戳    

       - shundown:将数据同步保存到磁盘,然后关闭服务

   10)  : 远程服务控制

       - info:提供服务器的信息和统计

       - monitor:实时转储收到的请求

       - slaveof:改变复制策略设置

       - config:在运行时配置Redis服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值