2.4Redis数据库基本知识学习
以及
若侵权,请联系本人进行修改。
2.4.1Redis基本数据类型
redis是一种高级的key-value非关系型数据库。,其中value支持五种数据类型:string,List,set,hash,sore set
字符串(string)
string存储的元素类型可以是string/int/float,int类型可以进行增加和减少操作。
代码实际操作过程:
字符串列表(list)
list类型是一个有序的列表,有序表示的是从左到右还是从右到左,而且数据内容是可以重复的。
代码实际操作过程:
字符串集合(set)
set类型中提供了无序的方式来存储多个不同的元素,set类型中每个元素的值都不一样,用户可以快速对元素中的值添加删除,检查某些值是否存在,重复的元素是无法继续插入集合的。
代码实际操作过程:
哈希(hash)
hash类型也叫散列类型,存储的时候存的是键值对。查询条数的时候只要是健不一样,就是不同的条数,尽管值是相同的。
代码实际操作过程:
有序字符串集合(sort set)
sore set也叫有序分数集,可以把它看作一个排行榜,每一个同学都有自己的分数,且排行榜中还有一个排名的属性,排行属性从0,根据分数不断变大,排行也不断变大。
代码实际操作过程:
2.4.2Redis数据库基本操作
string
简介:
string 可以包含任何数据,⽐如jpg 图⽚或者序列化的对象。
string类型是Redis最基本的数据类型,⼀个键最⼤能存储512MB。常用于:缓存页面、session共享、计数
设置键:
命令:SET key value #设置单键值对 >set h1 100 #设置h1的值为100
命令:mset key value [key value] #设置多个键值对 >mset name '王宝强' age 30 gender '男'
命令:setex key seconds value #设置键值及过期时间(秒单位) >setex age 100 20 #设置年龄的值为20,过期时间100秒
获取键
命令:get key #获取单个键>get h1
命令:mget key1 key2 key3 #获取多个键>mget name age sex
查看过期时间
命令:ttl key
>ttl a1 #查看a1的过期时间
运算
原来的值必须是数值字符串
命令:incr key #将对应的key 加1
命令:decr key #将对应的key值减1
命令:incrby key num #将对应的key加指定值
命令:decrby key num #将对应的key的值减去指定值
其他操作:
命令:append key value #追加值,redis中值都是字符串,追加就是字符拼
接
>append name 'hello' #如果原来的值是tom,那么现在就是tomhello
命令:strlen key #获取值得⻓度
hash
简介:
Redis hash 是⼀个键值(key=>value)对集合。Redis hash是⼀个string类型的field
和value的映射表,hash特别适合用于存储对象。每个 hash 可以存储 2的32次方
-1 键值对(40多亿)。
设置值
命令:hset key field value #设置key所指对象的指定属性的值
命令:hmset key field value [field value] #设置key所指对象的多
个属性值
命令:hsetnx key field value #当field字段不存在时 设置key所指对
象的field属性值
eg:
hset person name '⼆狗⼦'
hmset person age 20 sex '男'
hsetnx person maried '未婚'
获取值
命令: hget key field #获取key指定的对象的属性值
命令: hmget key field [field] #获取key指定对象的多个属性值
命令: hgetall key #获取key所指对象的所有属性的名称和值
命令: hkeys key #获取key所指对象的所有属性名
命令: hvals key #获取key所指对象是的所有属性值
命令: hlen key #获取key所指对象的属性个数
其他操作
命令:hincrby key field increment #为key所指对象的指定字段的整
数值加上increment
命令:hincrbyfloat key field increment #为key所指对象的指定字段的
实数值加上increment
命令:hexists key field #判断当前的字段是否存在在(在返回1 否则返回
0)
命令:hdel key field [field] #删除字段和值
list
简介:
redis 列表是简单的字符串列表,按照插⼊顺序排序。你可以添加⼀个元素到列表
的头部(左边)或者尾部(右边)。列表最多可存储 2的32次⽅ - 1 元素
(4294967295, 每个列表可存储40多亿)。
常应⽤于:1、对数据量⼤的集合数据删减 2、任务队列
添加数据:
命令:lpush key value [value] #头部插⼊数据
命令:lpushx key value #如果列表存在则在列表头部插⼊数据
命令:rpush key value [value] #在列表尾部添加数据
命令:rpushx key value #如果列表存在,则在尾部添加数据
命令:linsert key before|after value value #在指定值前或后插⼊数
据
命令:lset key index value #设定指定索引元素的值
注意:索引的值从左边开始,向右增加,左边第⼀个是0,从右边向左索引编号
为:-1 -2...
获取数据
命令:lpop key #左侧出队并返回出队元素
命令:rpop key #右侧出队并返回出队元素
命令:lindex key index #返回指定索引的值
命令:lrange key start end #返回存储列表中的指定范围的元素
[start,end]
命令:lrem key count value #从列表⾥移除前 count 次出现的值为
value 的元素
count > 0: 从头往尾移除值为 value 的元素。
count < 0: 从尾往头移除值为 value 的元素。
count = 0: 移除所有值为 value 的元素。
其他操作
命令:llen key #获取列表⻓度
命令:ltrim key start stop #裁剪列表 保留start到stop之间的元素,
其它都删除
ltrime mylist -3 -1 #从索引为-3到-2的保留, 以外的全部删除
set
简介
Redis的Set是string类型的⽆序集合,元素具有唯⼀性 不重复。集合是通过哈希表
实现的,所以添加,删除,查找的复杂度都是O(1)。
常应⽤于:对两个集合间的数据进⾏交集、并集、差集运算
添加元素
sadd key member [member] #添加多个元素
获取元素
smembers key #获取集合中所有的元素
scard key #返回集合元素的个数
srandmember key [count] #返回集合中随机元素的值,可以返回count个
其他操作
spop key [count] #移除集合中随机的count个元素,并返回
srem key member1 [member2] #移除集合中 ⼀个或者 多个 成员
sismember key member #判断元素是否在集合中 存在返回1 不在返回0
集合操作
求多个集合的交集: sinter key [key...]
求多个集合的差集 (注意⽐较顺序):sdiff key [key...]
求 多个集合的并集: sunion key [key....]
zset
简介
Redis zset 和 set ⼀样也是string类型元素的集合,且不允许重复的成员。不同的是
每个元素都会关联⼀个double类型的分数。redis正是通过分数来为集合中的成员
进⾏从⼩到⼤的排序。zset的成员是唯⼀的,但分数(score)却可以重复。
常应⽤于:排⾏榜
添加元素
zadd key score member [score member] #添加多个元素
zincrby key increment member #对指定的成员增加权重
increment
获取元素
zrange key start end #返回指定范围的元素
zcard key #返回元素的个数
zcount key min max #返回有序集合中权重在min和max之间的元素的
个数
zscore key member #返回有序集合中 member(元素) 的权重
(score)
zrange key start end withscores #返回当前key中 所有的权重
(score)和元素(member)
其他操作:
keys * #查看所有的key
keys u* #查以u开始的key
keys n??? 查找以n为开头⻓度为4个的key
keys n 查找 包含 n 的所有的key
⽀持的正则表达式:
- h?llo 匹配第⼆位为任意的字符
- h*llo 匹配第⼆位为任意字符 0个 或多个
- h[ab]llo 匹配第⼆位为 a或者b的字符的key
- hello 匹配第⼆位除了e字符以外的任意的key
- h[a-z]llo 匹配第⼆位为a-z的⼩写字⺟的key
exists key #判断键是否存在
type key #查看key对应的value的类型
del key #删除指定key
expire key 10 #设置过期时间,秒
persist key #移除key的过期时间
rename key newkey #修改key的名称(如果新的key的名字存在 则会把存在的key的 值 覆盖掉)
randomkey #随机返回⼀个 key
move key db 将键移动到指定库
flushdb #清空当前库所有key
flushall #清空所有库⾥的key
exit #退出redis客户端
quit 退出客户端
查看服务器信息
info
dbsize 当前库中有多少key