Redis 简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis 优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。


Redis 命令笔记

     启动Redis :redis-server.exe redis.windows.conf

     连接redis服务器:redis-cli.exe -h 127.0.0.1 -p 6379 -a 输入密码  (端口号和ip地址都是默认的)

     查看配置文件:config get *       config get name       config  set  name value

     String类型的值:set name value     get name value     mset key value key value   mget key1 key2(最大可以存储512MB)

           del key  (删除指定key值,成功返回1,失败返回0)

           exists key (检查key是否存在)

           expire key time (以秒为单位,过了秒数自动删除)  expireat key time  (以时间戳为单位)  pexpire key time (以毫秒为单位)

           keys * (查询所有类型的值)

           move key index (把指定的key值移动到指定的数据库下)

           persist key   (移除指定key的过期时间)

           pttl key  (查看key的过期时间,以毫秒为单位)

           ttl key (查看key的过期时间,以秒为单位)

           randomkey (随机返回一个key)

           rename key newkey (给key改名,改成newkey。如果newkey存在会覆盖旧的)

           renamenx key newkey (当newkey存在时会改名失败)

           type key (查看类型)

           getrange key stareindex endindex (截取字符串下标从0开始,0  -1  截取全部)

           getset key newvalue (赋新值返回旧值)

           setex key time value (创建key并且设置key存活时间,如果存在则覆盖,以秒为单位)

           setrange key offset value (替换,从offset开始下标从0开始,value 具体替换的值)

           strlen key (返回字符串的长度)

           msetnx key value key value (只能对不存在的key赋值,如果key存在会失败)

           psetex key time value (创建key并且设置key存活时间,如果存在则覆盖,以毫秒为单位)

           incr  key (key 中储存的数字值增一。 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作)

           incrby key increnemt (命令将 key 中储存的数字加上指定的增量值)

           incrbyfloat key float (key 中所储存的值加上指定的浮点数增量值)

           decr key (将 key 中储存的数字值减一)

           decrby key decrenemt (命令将 key 所储存的值减去指定的减量值)

           append key value (命令将 value 追加到 key 原来的值的末尾,返回字符长度)

     Hash 类型的值:创建:hmset testhash  key1 value1 key2 value2  (赋值多个) hset key k1 k1value  (赋值单个)     (最大可存储40多亿对)

                                 查看:hget testhash key1  (查看单个)hmget key k1 k2 k3 (查看多个) 

          hgetall key   (查看当前hash类型的所有key和value)

          hdel key k1 k2 (删除当前hash指定的k1和k2)

          hexists key k1  (用于查看哈希表的指定字段是否存在)

          hincrby key k1 int (用于为哈希表中的字段值加上指定增量值。 增量也可以为负数)

          hincrbyfloat key k1 float (用于为哈希表中的字段值加上指定浮点数增量值.增量也可以为负数)

          hkeys key (哈希表中所有域(field)列表。 当 key 不存在时,返回一个空列表)

          hmget key k1 k2 k3 (返回value值,表值的排列顺序和指定字段的请求顺序一样。如果指定的字段不存在于哈希表,那么返回一个 nil 值)

          hlen key (获取hash类型的字段数量)

          hsetnx key k1 k1value (用于为哈希表中不存在的的字段赋值)

          hvals key (命令返回哈希表所有value的值。)

   List 类型的命令  (最大可存储40多亿对)。“4294967295”

          lpush keylist value1 value2 value3    (将3个值插入keylist中,返回该list的长度)

          lrange keylist start stop (从start下标开始到stop,从0开始,返回keylist中的值,以插入的顺序逆序排列)