Redis是一款开源的可持久化型、key-value型数据库。
五种数据结构
Redis的key只能是String类型的字符串,value支持五种数据类型String, Set, List, Hash, ZSet
。
String类型
最简单的数据类型,一个key对应一个value, 这里的value的支持三种数据类型:字符串、浮点型、数字型。
简单命令:
1、set key-name value
: 设置value值
2、get key-name
: 根据key-name 获取value值
3、incr key-name
: 根据key-name 让value自增,对数据类型有用
4、desc key-name
: 根据key-name 让value自减,对数据类型有用
5、append key-name
hello : 在key-value 原有的值后面追加hello
6、strlen key-name
: 获取key-value的value值的长度
7、mset key1 value1 key2 valu2..
: 同时设置多个值
8、mget key1 key2...
:同时得到多个值
9、del key-name
: 删除key-name
10、getset key-name value2
: 将key-name的value值改为value2
Set类型
Set 是集合数据类型,无序,能够存储多个value值,不能存储重复的value值。
常用命令:
1、sadd key-name value1 value2...
: 给key-name 设置多个value值
2、srem key-name value1 value2...
: 删除key-name 中的指定值
3、smembers key-name
: 获取key-name中的所有元素
4、sismember key-name
: 判断key-name是否存在
5、scard key-name
: 获取key-name中的元素个数
6、spop key-name
: 从key-name中随机弹出一个元素
List类型
List 是双向链表数据类型,支持反向遍历、查找等操作,有序(从左往右)。
能够存储多个value值,允许重复的value值。
简单命令:
1、lpush key-name value
: 向链表key-name左边插入value
2、rpush key-name value
:向链表key-name右边插入value
3、lpop key-name
: 向key-name右边弹出元素
4、rpop key-name
: 向key-name左边弹出元素
5、llen key-name
: 获取key-name列表中的个数
6、lrange key-name start stop
: 获取key-name列表中start 到 stop 之间的元素
7、lrem key-name count value
: 删除元素,当count>0时从左边开始数,count< 0时从右边开始数,count=0时会删除所有值为value的元素
8、ltrim key-name start stop
: 保留key-name中指定的值,包括start和stop
Hash类型
Hash是散列数据类型,无序,能够存储多个key-value值。
常用命令:
1、hset key-name field-name value
: 给key-name 设置值
2、hmset key-name field-name1 value1 [field-name2 value2...]
:设置多个值
3、hget key-name field
: 获取key-name中field字段中的元素
4、hmget key-name field1 [field2]
: 获取key-name 中的多个field字段元素
5、hgetall key-name
: 获取key-name中的全部字段及元素
6、hexists key-name field
: 判断key-name中的field字段是否存在
7、hsetnx key-name field value
: 当key-name中的field不存在时赋值
8、hdel key-name field
: 删除key-name中的field 字段
9、hkeys key-name
: 获取key-name 中的所有字符
10、hvals key-name
: 获取key-name中的所有元素
11、hlen key-name
: 获取key-name字段数量
ZSet类型
ZSet有序集合数据类型,有序,能够存储多个value值,但是value只能是分值(分值就是指浮点型数据),集合中会根据value值默认排序.
常用命令:
1、zadd key-name count1 value1 [count2 value2...]
: 给key-name 设置多个值
数据库存活周期
Redis每种类型的数据都有一个默认的expire属性,我们可以自由设置时间(单位是秒),表示这个数据库的过期时间
1、expire key-name seconds: 设置时间单位为秒
2、ttl key-name: 查看key-name的过期时间
3、persist key-name: 取消key-name的过期时间设置
精确度: 如果在过期时间一秒内被访问,那么过期时间就将会被延迟一秒钟,在2.6.0 版本进行改进,延迟被降低在1毫秒之内。