数据库Redis

Posted 疏楼龙宿^

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库Redis相关的知识,希望对你有一定的参考价值。

Redis数据库的特点:

  Redis数据库属于nosql数据库的一种,其存储于内存中(非硬盘),修改较为方便。

  而Redis数据库的存储方式是使用{key:value}方式存储,类似python基础中的字典类型,和python中字典格式相比,其基础格式定义基本雷同:python中字典key值为不重复的不可变内容,value为任意对象(字符串、列表、集合、字典);Redis中key为固定的不重复字符串格式,value为任意对象(字符串、hash值、列表、集合、有序集合)。

  乌班图中如何使用Redis呢?

  进入虚拟机后:

  redis-cli                         进入Redis数据库

  exit                退出Redis数据库

  sudo service redis start/stop/restart   启动/关闭/重启 乌班图 中的Redis数据库功能

  select n              Redis中默认有16个数据库,n为数据库编号0~15,无法新建数据库,默认选择 n=0

如何在Redis数据库中进行增删改查:

  1、value为字符串类型时:

  创建一个key为str_a,value为hello的数据对象:set key value :中文理解,设置key值,value值  

   set str_a hello 

  在上述例子中hello后面加一个_world:append key value :中文理解,在key对应的value后面追加当前value值

   append str_a _world 

  查询str_a这个key对应的值:get key :中文理解,获取key对应数据(想到了python字典方法,根据key获取value) 

   get str_a 输出结果:"hello_world" 

  删除srt_a这个key的相关数据:del key:中文理解,删除key对应数据 

    del str_a 输出结果:(integer) 1  

  2、value为hash类型时:

  什么是hash类型:即key:value对应类型,称hash类型,在此处可以简单用一个例子来理解 {key:{field:value}}

  因为key太多了,防止理解偏差,所以hash类型中的key我们称作   field ----> 域

  创建:hset key field value :中文理解下:采用 hash格式 设置  key值  field值 value值

   hset hash_a a 1 

  我们都知道,字典内的键值对可以有很多,那么我们这个hash值内可以有多个值么,可以一次添加多个值么?答案是肯定可以啊,,,我们这种猪脑子都能想到的,写代码底层的人员肯定也会啊。

   hmset hash_a b c 3 d 4 

  增加:也用set,方法和上面一毛一样

  改:同上+1

  查看:查看的角度有点多,首先我们要知道去查什么!

  查看指定的域的值:hget key field

   hget hash_a a 输出结果:"1" 

  查看所有的域和值:hgetall key

   hgetall hash_a 输出结果:太长了,自己敲去 

  查看所有的域:hkeys key:field本质上也是键值对的key,到这个指定的key里面,把里面一层的key都找出来

   hkeys hash_a 

  查看所有的值:hvals key

   hvals hash_a 

  3、当value值为列表时:

  创建/增加数据:lpush/rpush key value : 中文理解:左边/右边增加 key中value的值,关键词lpush/rpush后面第一个单词为key,后面所有打包为列表作为value的值

   rpush list_a 1 2 3 4 5 6  

  查看:lrange key start stop : l 代表 list 查看key对应值的索引,从start开始,到stop结束(包含头尾)

   lrange list_a 0 3 输出结果是:1,2,3,4 

  如何查看对应索引取值呢?

   lindex list 2 输出结果:3 

  修改:lset key index value: 中文理解: 列表格式设置key对应值的索引号值改为value值

   lset list_a 3 333 

  然后去查看,会发现4变成了333

  删除:rpop/lpop key :中文理解:左/右边开始删除一个数据(????python里面列表的pop删除方法????)

   rpop list_a 

  这样,最后的6就没了

  4、当value值为集合时:

  创建/添加数据:sadd key member : 因为集合本身缩写是set,所以这里设置不能再用set了,干脆改成了add ---> + ,value因为无序性且不重复的特点,用member表示

   sadd s_a 1 1 2 3 4 5 6 

  这里只存在了6个值,因为1,1,2,3,4,5,6 在这里面会以{1,2,3,4,5,6,}形式存在,而集合内元素不可以重复,两个1,只保留一个

  查看: smembers key 

   smembers key 

  删除:spop key : 删除一个值,因为无序,所以....我也不知道他会删哪个,随缘吧

   spop s_a 

   如果我不要随机删除呢,我就要把上述数据中的5删掉!

  使用指定删除方法:srem key member   (可以输入多个值,一起删除)

    srem s_a 5 

  5、当value值为有序集合时:

  什么是有序集合?就是有顺序的集合!有顺序是什么概念,有 索 引 【一个元素不能重复的列表!???】这其中有一个增加概念,分组,即某些元素被编成一组,编组与其他特性概念不冲突,无影响(即不影响顺序,无关索引)

  创建/增加:zadd key score member [score2 member2...]    : z代表有序集合zset zset格式创建/增加key值中 分组为score的value值(可以写好几个),有点绕,看代码

   zadd zs_a 1 a 2 11 2 9 1 b

  其中的1 2 为分组,a 11 9 b才是值,在这其中,a b 为1组,11 9 为2组,之所以为了这样,可能是为了方便删除?

  查看:zrange key start stop : 有点眼熟?上面列表那块的查看方式?没毛病,毕竟我这里也是有顺序的【zset:其实我就是个有部分集合特征的列表 [/滑稽] 】 

    zrange zs_a 0 1 

  如果我要看1组内容呢?

  分组查看:zrangebyscore key min max

   zrangeby score zs_a 0 1 

  注意,后面要跟两个数字,偏偏这俩数字还包含头尾,,,,,单独查中间一组,我还需要进一步研究.....

  删除:zrem key member

   zrem zs_a b  

  一次删一个太慢,我要删一片儿:

  1)上面那个方法,你后面多写几个值,可以一起删除;

  2)根据索引删,切片形式删除:zremrangebyrank key min max 

   zremrangebyrank zs_a 0 1 

  3)除了索引,我们还有个分组:zremrangebyscore key min max

   zremrangebyscore zs_a 0 1

  至此,五种value表现形式下的增删改查基本全了,但除此之外,我们还有一套操作,针对你创建的数据整体,如果我们将上述内容比作表格,我们之前的操作就是在表格中对数据进行增删改查,那么,我们如何对表格本身进行增删改查呢?(如何对整体的key进行操作?)

  补充点,全局方法:

  查看所有数据的key值:

   keys * 

  删除键值对:del key

   del zs_a 

  查看key是否存在:exists key 

   exists list_a 

  修改key 的值:rename key new_key

   rename str_a stra 

  设置有效时间,时间到了会自动删除,单位秒:expire key seconds

   expire s_a 100 

  查看有效时间剩余:ttl key

   ttl s_a 

  取消有效时间限制:prisist key

   pristst s_a  

 

以上是关于数据库Redis的主要内容,如果未能解决你的问题,请参考以下文章

RedisRedis 数据库 安装配置访问 ( Redis 简介 | 下载 Redis 安装包 | 安装 Redis 数据库 | 命令行访问 Redis | 使用可视化工具访问 Redis )

如何利用redis从数据库读出数据

Redis数据库的日常使用

Redis | 第4章 Redis中的数据库《Redis设计与实现》

Redis数据库——Redis简介部署及常用命令

redis 01 -- 重启 redis 需要清空数据