redis慕课
redis常见存储数据结构
1.字符串【String】,2.哈希【hash】,3.字符串列表【list】,4.字符串集合【set】,5.有序字符串集合
第一种:字符串类型
【1】,存储字符串跟获取字符串,
set为关键字,后面跟key的名字,再后面跟上key的值,获取的时候直接get key即可
【2】根据key修改字符串的值
用关键字getset key 修改后的值,这样就完成了根据key修改字符串值;例如下面就把百度的地址换成了谷歌的地址
【3】根据key删除某一个值
关键字del,,比如del company,删除了key为company的值
【4】,递增命令
incr关键字可以完成根据key递增的操作,类似于mysql的auto-increment操作,incr的初始值为0,每次进行一次操作增量为1,如果key对应的value为字符串则报错
【5】递减命令
跟incr关键字相反,decr关键字为递减操作,如果key存在并且为数值类型,则每次递减1,如果key不存在则默认0,开始递减
【6】指定增量操作
incrby key 增量 为递增指定增量的操作,decrby key 减量 为减去指定量的操作,,当然incrby可以给负数为递减,decrby给负数为递增,都是可以的
【7】字符串的追加操作
append关键字表示在原有字符串基础上追加字符串,跟java的append类似,后面返回的Integer为字符串的长度
第二种:哈希类型
【1】键值对存储跟获取
存储多个键值对,可以单个获取,也可以多个获取
hset 关键字表示存储键值对,后面直接跟key的名称,然后键值对紧接着跟在后面即可,需要注意的是hset每次只可以存储一个键值对,获取的时候也是每次只能获取一个,
【2】,一次性多个键值对的获取根存储
hmset,hmget表示一次可以存储多个键值对,也可以获取多个键值对,
【3】,一次性全部取出hset中的值,这里需要注意hmset中的值貌似无法一次性全部获取,
【4】,删除hash中的某一个属性
hdel关键字用来删除hash中的某一个属性,其他的属性还在
【5】删除整个hash
del 用来删除整个hash,删除后整个hash中的存储的所有属性都被删除了
【6】,这里再扩展几个不常用的
判断hash中属性是否存在,如果存在返回1,不存在返回0
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
返回当前hash中有几个属性
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
keys获取当前hash中所有key,vals获取的当前hash中所有vals
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第三种: list结构
【1】list的插入分为左侧插入跟右侧插入
左侧插入跟右侧插入元素跟查看列表,从下面的例子很容易看出,左侧插入不管你插入时键入的顺序从左侧开始插入,先输入的在列表中的最右边的位置,然后取的时候也是从左侧开始取的,lpush->左侧插入关键字,lrange->查看列表关键字,,有个技巧 lrange 列表名 0 -1 表示列出所有元素,左右插入的通用
右侧插入跟左侧插入恰好相反,看图就可以明白
【2】左侧弹出跟右侧弹出元素
左侧弹出 lpop 表示从删掉最左边的一个元素,rpop表示删掉最右边的一个元素
【3】查看元素个数
llen表示查看list中有多少个元素,如果查看的list不存在则为0
【4】在头部或者尾部添加一个元素
lpushx 链表名称 元素值 表示在元素左侧添加一个元素,rpushx 链表名称 元素值表示在元素右侧添加一个值
【5】删除元素
lrem表示删除元素,下面的命令 lrem test02 2 a 表示从test02中从头开始删除两个a,如果2给成负值表示从尾开始,删除两个a
【6】在指定下标修改元素
lset关键字可以在先指定list的下标,然后插入想要插入的元素值,替换掉原来元素的值
第四个: set集合类型
set集合跟java中的set一样,存储无序不重复的元素,set的效率很高
【1】set的添加 sadd,删除 srem,查看 smembers
【2】判断set中是否包含指定元素,返回1表示包含,返回0表示不包含
【3】set的交集跟并集运算
sinter命令表示取交集部分,sunion表示取并集,当然会去重
【4】查看元素个数
scard命令表示查看set的元素个数
【5】srandmember命令表示从set中随机取出一个元素
【6】将两个set的交集存储到另一个set中,,将两个set的并集存储到另一个set中
sinterstore set_interstore set_a1 set_a2 //将交集存储 关键字 sinterstore
sunionstore sunionstore set_a1 set_a2 //将并集存储 关键字 sunionstore
第五个 :有序set sorted set
【1】元素的添加,个数查看,删除
sorted-set中:zadd为添加元素命令,后面有个整形的数字成为元素的分数,作为元素的唯一标识,添加的元素的时候先写分数,再给值
zscore命令为根据元素的值查看元素的分数
zcard命令为查看元素zise
zrem命令为删除元素,可以一次性删除多个元素
【2】,输出所有元素的值,
命令:zrange,输出元素所有值,默认由分数从小到大的顺序输出
命令:zrange ·····withscores,输出元素值跟分数,默认也是由分数从小到大的顺序输出
到这里为止,五中类型都的常用命令都介绍完毕了,
redis的通用操作命令
keys * //列出当前redis中所有key
keys my* //列出所有以my打头的key, 这里的 * 跟sql一样表示所有
del key1 key2 key3 //一次性删除好几个key
rename oldKeyName newKeyName //表示给key重命名,key的名字由原来的oldKeyName 变成了newKeyName
type keyName //表示查看key的类型,结果有五中【string,list,set,hash,zset】
reids特性
一个redis有16个数据库实例,下标分别为0~15,默认连接下标为0的数据库,这个跟mysql的database一样
我们可以手动选择连接那个数据库,命令为:select 1,,表示连接下标为1的数据库
事务:
multi exec discard
reids事务的这三个关键字跟mysql中的begin,commit,rollback,基本上是一模一样的用法,这里暂时不做介绍
持久化:
redis将数据由缓存存入硬盘的过程称为redis的持久化操作,
rdb方式:表示设置多长时间间隔,将数据从缓存写入硬盘的操作,比如设置每间隔20秒将数据更新到硬盘一次,这种机制其实质是根据设置的时间生成一个数据文件,相当于做了一次备份操作,对于数据恢复跟容灾是一个很不错的选择。
aof方式:表示根据redis启动时到结束时候的对redis的操作日志把数据更新到硬盘的操作