一.Redis概述
1.Redis是什么?
Redis是一个开源的,高性能的,基于键值对的缓存与存储系统,通过提供多种键值数据类型(五种)来适应不同场景下的缓存与存储需求。
2.Redis支持的键值数据类型有哪些?
1)字符串类型(String)
2)散列类型(Hash)
3) 列表类型(List)
4) 集合类型(set)
5) 有序集合类型(TreeSet)
注意:String类型是Redis中最基本的数据类型,它能存储任何形式的字符串,它是其他4种数据类型的基础,其他数据类型和字符串类型的差别从某种角度来说只是组织字符串的形式不同。
3.Redis技术特性
1.相对于一般数据库,Redis映射结构的存储方式和多种键值数据类型的支持是我们可以将程序中的数据直接映射到Redis中,因为数据在程序中的存储方式和Redis中的存储方式非常相似。
2.Redis对不同的数据类型提供了非常方便的操作方式,这让我们使用起来也很轻松。
3.Redis数据库中的所有数据都存储在内存中,所以它的存取速度相对于其他基于硬盘存储的数据库性能优势很大,同时,它也提供数据持久化支持,不必担心数据丢失。
4.虽然Redis是一个数据库,但由于它提供了丰富的功能,很多技术人员把它用作缓存,队列系统。
5.Redis使用C语言开发,代码量只有几万行,这意味着改造它成为可能。
二.Redis字符串和散列数据类型操作命令学习
注意:Redis中所有命令都是原子操作
字符串类型
1.获得键名列表
KEYS * //获得所有键名列表
KEYS a[b-d] //获得匹配的键名列表 ab ac ad
KEYS a? //匹配a~ 问号可以匹配任何一个字符
2.创建一个键值对
SET keyname value //keyname是键名 value为它对应的值
或者创建多个
MSET keyname1 value1 keyname2 value2 ...
3.判断名为keyname的键是否存在
EXISTS keyname //返回1存在,0不存在
4.删除一个或多个键
DEL keyname
或者
DEL keyname1 keyname2 ...
5.获得键值的数据类型
TYPE keyname
6.让当前键值递增,并返回递增后的值,如果当前键值不是数字会报错
INCR keyname
7.指定键值加上指定数
INCRBY keyname n //让keyname对应的值加n
或者增加指定浮点数
INCRBYFLOAT keyname m//m为浮点数
8.指定键值减1或减n操作
DECR keyname //减一
DECR keyname n//减n
9.向键值末尾添加指定字符串
APPEND keyname value //如果value中包含空格类型的字符,我们可以用 “value”
10.获得键值长度
STRLEN keyname
11.获取一个或多个键值
MGET keyname1 keyname2 ...
位操作
12.获得键值位级数据第offet+1个数值(因为从0开始计数)
GETBIT keyname offet
13.设置键值指定位置(offet位)二进制的数,返回其旧值
SETBIT keyname offet value
14.获取键值中位值为1的二进制位个数
BITCOUNT keyname
或者
BITCOUNT keyname n m//n ,m限制统计的字节范围(从0开始计数)
15.位运算
BITOP OR res foo1 foo2//将foo1和foo2进行或运算后的结果放入res中
//AND 与
//NOT 非
//XOR 异或
16.获取键值中第n个二进制数为1的偏移量(把存储单元的实际地址与其所在段的段地址之间的距离称为段内偏移,也称为“有效地址或偏移量”。)
BITPOS keyname n
或者
BITPOS keyname n m k//其中m k 指定开始和结束字节的位置
利用位操作命令可以非常紧凑地存储布尔值。
散列类型
其类型结构为:
1.设置一个散列类型键值对
HSET keyname field value//同时它也兼并更新操作
2.获取某键某字段的值
HGET keyname field
3.设置或更新多个字段
HMSET keyname field1 value1 field2 value2 ...
4.获取指定键的多个字段值
HMGET keyname field1 field2 ...
5.获取某键的所有信息
HGETALL keyname
6.判断字段是否存在
HEXISTS keyname field
7.不更新创建:当字段不存在时才创建,否则不执行任何操作
HSETNX keyname field value
8.使指定字段加n
HINCRBY keyname field n//当keyname不存在时会自动创建且字段值为n
9.删除一个或多个字段
HDEL keyname field ...
10.只获取所有字段名
HKEYS keyname
11.只获取所有字段值
HVALS keyname
12.获取字段数量
HLEN keyname
Redis中散列类型相对于普通数据库而言,它可以自由的为任何键增减字段而不影响其他的键。