- Redis的存储结构:字符类型,散列类型,列表类型,集合类型,有序集合。
- Redis功能:
- 可以为每个key设置超时时间。
- 可以通过列表类型来实现分布式队列的操作。
- 支持发布订阅的消息模式。
- 为什么使用Redis?提供了很多命令与redis进行交互,使redis使用十分简单。
- redis的应用场景:
- 数据缓存(商品数据、新闻、热点数据)。
- 单点登录。
- 秒杀、抢购。
- 网站访问排名…。
- 应用的模块开发。
- redis的安装
- 下载redis安装包http://download.redis.io/releases/
- tar -zxvf 安装包名称
- 下载redis安装包http://download.redis.io/releases/
-
- 在redis解压目录下(redis-3.2.8),执行: make
- 可以通过:make test 测试编译状态(测试编译状态报错)。
-
- 切换到当前目录上级目录:mkdir redis 创建一个redis文件夹(新建的) 。
- 切换到解压包目录下执行:make install PREFIX=/home/redis 完成安装。
- 通过:cp redis.conf ../redis 将解压目录下面的conf文件复制到新建的redis目录下。
- 常用命令
- ./redis-server ../redis.conf //启动
- ./redis-cli shutdown //关闭
- 以后台进程的方式启动,修改redis.conf daemonize =yes。
- ./redis-cli -h 127.0.0.1 -p 6379 //连接到redis的命令
- ./redis-cli //访问到redis的控制台
keys pattern [? / * /[]] //获得一个符合匹配规则的键名列表
EXISTS key //判断一个键是否存在
type key //去获得这个key的数据结构类型
- 各种数据(存储)结构的使用
-
字符类型
-
一个字符类型的key默认存储的最大容量是512M 赋值和取值 SET key value GET key 递增数字
incr key 如果存入的该key值需要实现递增,可以使用incr命令创建key,每次set会自动递增,不至于value手动操作加值 错误的演示: int value= get key; value =value +1; set key value;
key的设计:对象类型:对象id:对象属性:对象子属性
incryby key increment //递增指定的整数
decr key //原子递减
append key value //向指定的key追加字符串
strlen key //获得key对应的value的长度
mget key key.. //同时获得多个key的value
mset key value key value key value … //同时设置多个key的value
-
-
列表类型
-
list, 可以存储一个有序的字符串列表
LPUSH/RPUSH key value: //从左边或者右边push数据
llen key //获得列表的长度
LPOP/RPOP key //取数据
应用场景:可以用来做分布式消息队列
lrange key start stop //索引可以是负数, -1表示最右边的第一个元素
lrem key count value //删除列表指定元素
lset key index value //设置索引的值
-
- 散列类型
hash key value 不支持数据类型的嵌套,比较适合存储对象
hset key field value
hget key filed
hmset key filed value [filed value …] //一次性设置多个值
hmget key field field … //一次性获得多个值
hgetall key //获得hash的所有信息,包括key和value
hexists key field //判断字段是否存在。 存在返回1. 不存在返回0
hdel key field [field …] //删除一个或者多个字段
-
-
集合类型
-
set 跟list 不一样的点。 集合类型不能存在重复的数据。而且是无序的
sadd key member [member ...] //增加数据; 如果value已经存在,则会忽略存在的值,并且返回成功加入的元素的数量
srem key member //删除元素
smembers key //获得所有数据
sdiff key key … //对多个集合执行差集运算
sunion //对多个集合执行并集操作, 同时存在在两个集合里的所有值
-
-
有序集合
-
zadd key score member //添加数据
zrange key start stop [withscores] //去获得元素。 withscores是可以获得元素的分数
- redis的事务处理
MULTI //去开启事务
EXEC //去执行事务
- 过期时间设置(使用)
expire key seconds //设置建过期时间
ttl key //获得key的过期时间
- 发布订阅命令
publish key value //发布 subscribe key //另一台机器订阅
-
删除key命令
del key