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 安装流程请参考 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
例: