Redis五种数据类型使用总结
2017-12-27 23:14
411 查看
redis是用C语言开发的一个开源的高性能键值对(key-value)数据库(nosql),应用在缓存.它通过提供多种键值数据类型来适应不同场景下的存储需求.
redis的应用场景:
缓存
分布式集群架构中的session分离
任务队列(秒杀、抢购、12306等等)
应用排行榜(SortedSet)
网站访问统计
数据过期处理(expire)
目前为止redis支持的键值数据类型有5种.如下:
字符串类型(String)
散列类型(Hash)
列表类型(List)
集合类型(Set)
有序集合类型(SortedSet)
redis是单线程的,不适合存储比较大的数据.redis中所有的数据都是字符串.
各数据类型的使用及操作命令:
1. String: key - value
设置值
set key value
获取值
get key
加一
inc key
减一
decr key
2. Hash: key - field - value
相当于Java中的Map<String, Map<String, String>>类型
设置值
hset key field value
获取值
hget key field
加num
hincrby key field num
3. List
List是有顺序可重复的,数据结构为双链表队列,可以从左右两个方向添加元素.
从左添加元素
lpush list a b c d
从右添加元素
rpush list 1 2 3 4
查看区间上的数据(从0到-1表示查看所有)
lrange list 0 -1
从左边取数据(弹栈删除)
lpop list
从右边取数据(弹栈删除)
rpop list
4. Set
Set无序,不能重复.
添加元素
sadd set a b c d d
查询元素
smembers set
删除元素
srem set a
5. SortedSet(zset)
zset有顺序,不能重复
适合做排行榜,排序需要一个分数属性
添加元素
zadd zset score member(score member可以有多个)
查看元素,从小到大(如果要查看分数,需加上withscores)
zrange zset start end [withscores]
查看元素,从大到小(如果要查看分数,需加上withscores)
zrevrange zset start end [withscores]
对member元素增加score
zincrby zset score member
其它命令
设置key的过期时间(单位:秒)
expire key second
查看剩余时间(-2: 不存在, -1: 已被持久化, 正数表示剩余的时间)
ttl key
清除过期时间(即持久化,成功返回1,失败返回0)
persist key
删除key
del key
判断是否存在(存在返回1,不存在返回0)
exists key
选择数据库,默认是0号数据库
select 0
redis持久化方案
redis数据都放在内存中,如果机器挂掉,内存的数据就会丢失,因此需要做持久化,将内存中的数据保存在磁盘,下一次启动的时候就可以恢复数据到内存中.
redis持久化有两种方式(默认开启RDB)
1.RDB 快照形式 定期将当前时刻的数据保存磁盘中,会产生一个dump.rdb文件
特点: 会存在数据丢失,性能较好,数据备份
2.AOF(append only file) 记录所有对redis的操作命令记录在aof文件中,恢复数据只需重新执行一遍即可
特点: 每秒保存,数据比较完整,耗费性能
如果同时开启两个持久化方案,则按照 AOF 的持久化放案恢复数据
redis的应用场景:
缓存
分布式集群架构中的session分离
任务队列(秒杀、抢购、12306等等)
应用排行榜(SortedSet)
网站访问统计
数据过期处理(expire)
目前为止redis支持的键值数据类型有5种.如下:
字符串类型(String)
散列类型(Hash)
列表类型(List)
集合类型(Set)
有序集合类型(SortedSet)
redis是单线程的,不适合存储比较大的数据.redis中所有的数据都是字符串.
各数据类型的使用及操作命令:
1. String: key - value
设置值
set key value
获取值
get key
加一
inc key
减一
decr key
2. Hash: key - field - value
相当于Java中的Map<String, Map<String, String>>类型
设置值
hset key field value
获取值
hget key field
加num
hincrby key field num
3. List
List是有顺序可重复的,数据结构为双链表队列,可以从左右两个方向添加元素.
从左添加元素
lpush list a b c d
从右添加元素
rpush list 1 2 3 4
查看区间上的数据(从0到-1表示查看所有)
lrange list 0 -1
从左边取数据(弹栈删除)
lpop list
从右边取数据(弹栈删除)
rpop list
redis 127.0.0.1:6379> lpush list a b c d (integer) 4 redis 127.0.0.1:6379> lrange list 0 -1 1) "d" 2) "c" 3) "b" 4) "a" redis 127.0.0.1:6379> rpush list 1 2 3 4 (integer) 8 redis 127.0.0.1:6379> lrange list 0 -1 1) "d" 2) "c" 3) "b" 4) "a" 5) "1" 6) "2" 7) "3" 8) "4" redis 127.0.0.1:6379> lpop list "d" redis 127.0.0.1:6379> lrange list 0 -1 1) "c" 2) "b" 3) "a" 4) "1" 5) "2" 6) "3" 7) "4" redis 127.0.0.1:6379>
4. Set
Set无序,不能重复.
添加元素
sadd set a b c d d
查询元素
smembers set
删除元素
srem set a
5. SortedSet(zset)
zset有顺序,不能重复
适合做排行榜,排序需要一个分数属性
添加元素
zadd zset score member(score member可以有多个)
查看元素,从小到大(如果要查看分数,需加上withscores)
zrange zset start end [withscores]
查看元素,从大到小(如果要查看分数,需加上withscores)
zrevrange zset start end [withscores]
对member元素增加score
zincrby zset score member
其它命令
设置key的过期时间(单位:秒)
expire key second
查看剩余时间(-2: 不存在, -1: 已被持久化, 正数表示剩余的时间)
ttl key
清除过期时间(即持久化,成功返回1,失败返回0)
persist key
删除key
del key
判断是否存在(存在返回1,不存在返回0)
exists key
选择数据库,默认是0号数据库
select 0
redis持久化方案
redis数据都放在内存中,如果机器挂掉,内存的数据就会丢失,因此需要做持久化,将内存中的数据保存在磁盘,下一次启动的时候就可以恢复数据到内存中.
redis持久化有两种方式(默认开启RDB)
1.RDB 快照形式 定期将当前时刻的数据保存磁盘中,会产生一个dump.rdb文件
特点: 会存在数据丢失,性能较好,数据备份
2.AOF(append only file) 记录所有对redis的操作命令记录在aof文件中,恢复数据只需重新执行一遍即可
特点: 每秒保存,数据比较完整,耗费性能
如果同时开启两个持久化方案,则按照 AOF 的持久化放案恢复数据
相关文章推荐
- redis常用五种数据类型的使用
- redis 五种数据类型的使用场景
- redis 五种数据类型的使用场景
- Redis 五种数据类型的使用场景
- redis 五种数据类型的使用场景
- redis五种数据类型的使用
- redis 五种数据类型的使用场景
- redis 五种数据类型的使用场景
- redis 五种数据类型的使用场景
- redis五种数据类型的使用(zz)
- Redis 五种数据类型之简单使用
- redis五种数据类型的使用
- redis 五种数据类型的使用场景
- redis五种数据类型的使用
- redis 五种数据类型的使用场景
- redis 五种数据类型的使用场景
- Redis 五种数据类型的使用
- redis五种数据类型的使用
- redis 五种数据类型的使用场景
- redis五种数据类型的使用