Redis介绍

Redis:是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication)LUA脚本(Lua scripting), LRU驱动事件(LRU eviction)事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

查看Redis命令大全 → 

redis 安装流程请参考  http://www.runoob.com/redis/redis-install.html

一、redis的核心配置

redis的配置信息在redis/redis.conf文件下

  • 绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip

    bind 127.0.0.1

  • 端⼝,默认为6379

    port 6379

  • 是否以守护进程运⾏

    • 如果以守护进程运⾏,则不会在命令⾏阻塞,类似于服务
    • 如果以⾮守护进程运⾏,则当前终端被阻塞
    • 设置为yes表示守护进程,设置为no表示⾮守护进程
    • 推荐设置为yes

    daemonize yes

  • 数据⽂件

    dbfilename dump.rdb

  • 数据⽂件存储路径

    dir /var/lib/redis

  • ⽇志⽂件

    logfile "/var/log/redis/redis-server.log"

  • 数据库,默认有16个

    database 16

  • 主从复制,类似于双机备份。

    slaveof

具体请参考资料:redis配置信息http://blog.csdn.net/ljphilp/article/details/52934933

二、 redis的服务端和客户端

 1. 服务器端

    • 服务器端的命令为redis-server

    • 可以使⽤help查看帮助⽂档

      redis-server --help

    • 个人习惯

      ps aux | grep redis 查看redis服务器进程
      sudo kill -9 pid 杀死redis服务器
      sudo redis-server /etc/redis/redis.conf 指定加载的配置文件

2.客户端

  • 客户端的命令为redis-cli
  • 可以使⽤help查看帮助⽂档

    redis-cli --help

  • 连接redis

    redis-cli

运行测试命令:ping

redis切换数据库命令 select 数据库名(默认16个(0-15))

二、数据操作

1. 数据结构

  • redis是key-value的数据结构,每条数据都是⼀个键值对
  • 键的类型是字符串
  • 注意:键不能重复

值的类型分为五种:

  • 字符串string
  • 哈希hash
  • 列表list
  • 集合set
  • 有序集合zset

2. 数据操作

2.1 string操作

设置键值:set key value

 例:

设置键值过期时间,以秒为单位:setex key seconds value

例:

设置多个键值:mset key1 value1 key2 value2 ...

例:

追加值:append key value

例:

获取 :get key (根据键获取值,如果不存在此键则返回nil)

 根据多个键获取值:mget key1 key2 ...

例:

查找:keys pattern

查找所有键:keys *

查找名称中包含a的键:keys a*  

 判断键是否存在:exists key1:

    若存在返回1,若不存在返回2

例:

查看键对应的value类型:type key

例:

删除键及对应的值:del key1 key2 ...

例:

设置过期时间,以秒为单位

如果没有指定过期时间则⼀直存在,直到使⽤DEL移除

expire key seconds

例:

查看有效时间:ttl key

例:

2.2 hash

  • hash⽤于存储对象,对象的结构为属性、值
  • 值的类型为string

增加、修改

 设置单个属性:hset key field value

 设置多个属性:hmset key field1 value1 field2 value2 ...              

例:

获取

获取指定键所有属性:hkeys key 

获取一个属性的值:hget key field       

 例:

获取多个属性的值:hmget key field1 field2 ...  

例:

获取所有属性的值:hvals key                        

例:

删除: hdel key field1 field2 ...

  删除整个hash键及值,使⽤del命令

  删除属性,属性对应的值会被⼀起删除

例:

2.3 list类型

  • 列表的元素类型为string
  • 按照插⼊顺序排序

获取数据:lrange key start stop

  • start、stop为元素的下标索引
  • 索引从左侧开始,第⼀个元素为0
  • 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素

 增加:

在左侧插⼊数据 :lpush key value1 value2 ...

例:

在右侧插入数据:rpush key value1 value2 ...

 例:

在指定元素的前或后插入新元素:linsert key before或after 现有元素 新元素

结果:

设置指定索引位置的元素值:lset key index value

  • 索引从左侧开始,第⼀个元素为0
  • 索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素

 例:

删除:lrem key count value

  • 将列表中前count次出现的值为value的元素移除
  • count > 0: 从头往尾移除
  • count < 0: 从尾往头移除
  • count = 0: 移除所有

例:从列表右侧开始删除a,这里因为只有一个a,所以只能删除一个a,若有3个就删除3个a

2.4 set类型

  • ⽆序集合
  • 元素为string类型
  • 元素具有唯⼀性,不重复
  • 说明:对于集合没有修改操作

增加元素:sadd key member1 member2 ...

获取元素:smembers key

删除元素:srem key

例:

2.5  zset类型

  • sorted set,有序集合
  • 元素为string类型
  • 元素具有唯⼀性,不重复
  • 每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
  • 说明:没有修改操作

增加:zadd key score1 member1 score2 member2 ...

例:向 a4 的集合添加元素,且权重为2,3,4

获取:zrange key start stop

  • 返回指定范围内的元素
  • start、stop为元素的下标索引
  • 索引从左侧开始,第⼀个元素为0
  • 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素

 例:

返回score值在min和max之间的成员:zrangebyscore key min max

获取键 a4 的集合中权限在3跟4之间

例:

返回成员member的score值:zscore key member

获取键 a4 的集合元素的权重

例:

删除指定元素:zrem key member1 member2 ...

例:

删除权重在指定范围的元素:zremrangebyscore key min max

 例:

原文地址:https://www.cnblogs.com/xiaolu915/p/10557690.html