Redis基础知识

1)、测试redis服务的性能:
redis-benchmark 2)、查看redis服务是否正常运行:
ping 如果正常---pong 3)、查看redis服务器的统计信息:
info 查看redis服务的所有统计信息
info [信息段] 查看redis服务器的指定的统计信息,如:info Replication 4)、redis的数据库实例:作用类似于mysql的数据库实例,redis中的数据库实例只能由redis服务来创建和维护,开发人员不能修改和自行创建数据库实例;
默认情况下,redis会自动创建16个数据库实例,并且给这些数据库实例进行编号,从0开始,一直到15,使用时通过编号来使用数据库;
可以通过配置文件,指定redis自动创建的数据库个数;redis的每一个数据库实例本身占用的存储空间是很少的,所以也不造成存储空间的太多浪费。
默认情况下,redis客户端连接的是编号是0的数据库实例;可以使用select index切换数据库实例。 5)、查看当前数据库实例中所有key的数量:dbsize 6)、查看当前数据库实例中所有的key:keys * 7)、清空数据库实例:flushdb 8)、清空所有的数据库实例:flushall 9)、查看redis中所有的配置信息:config get *
查看redis中的指定的配置信息:config get parameter

Redis的五种数据结构

程序是用来处理数据的,Redis是用来存储数据的;程序处理完的数据要存储到redis中,不同特点的数据要存储在Redis中不同类型的数据结构中。

字符串:   zhangsan  20   true                    string 单key:单value: username:zhangsan age:20

list列表: 13900009999 zs@163.com 321321          list   单key:多有序value: contacts:13900009999,xxx,xxxx

set集合:  beijing shanghai chongqing tianjin     set    单key:多无序value:city:bj sh cq tj

pojo:    id:1001,name:zhangsan,age:20           hash   单key: 对象(属性:值):
student:id:1001,name:zhangsan,age:20
zset 单key:多有序vlaue:
city:
1000 tj,1200 cq,1500 sh,2000 bj

Redis中的操作命令

1)、redis中有关key的操作命令:
a)查看数据库中的key:keys pattern
|->*:匹配0个或者多个字符
|->?: 匹配1个字符
|->[]:匹配[]里边的1个字符 keys *:查看数据库中所有的key keys k*:查看数据库中所有以k开头的key keys h*o:查看数据库中所有以h开头、以o结尾的key keys h?o: 查看数据库中所有以h开头、以o结尾的、并且中间只有一个字符的key keys h[abc]llo:查看数据库中所有以h开头以llo结尾,并且h后边只能取abc中的一个字符的key b)判断key在数据库中是否存在:exists key 如果存在,则返回1;如果不存在,则返回0
exists key [key key ....] 返回值是存在的key的数量
exists k1
exists k1 k2 k3 hello c)移动指定key到指定的数据库实例:move key index
move k 1 d)查看指定key的剩余生存时间:ttl key
|->如果key没有设置生存时间,返回-1
|->如果key不存在,返回-2
ttl k1
ttl k2 e)设置key的最大生存时间:expire key seconds
expire k2 20 f)查看指定key的数据类型:type key
type k1 g)重命名key: rename key newkey
rename hello k2 h)删除指定的key:del key [key key .....]
|->返回值是实际删除的key的数量
del k1 k2 k3 k4 2)、redis中有关string类型数据的操作命令:
a)将string类型的数据设置到redis中:set 键 值
set zsname zhangsan
set zsage 20
set totalRows 100
set zsage 30 如果key已经存在,则后来的value会把以前的value覆盖掉. b)从redis中获取string类型的数据:get 键
get zsname
get zsage
get totalRows c)追加字符串:append key value
|->返回追加之后的字符串长度
|->如果key不存在,则新创建一个key,并且把value值设置为value。
set phone 1389999
append phone 8888 d)获取字符串数据的长度:strlen key
strlen phone e)将字符串数值进行加1运算:incr key
|->返回加1运算之后的数据
|->如果key不存在,首先设置一个key,值初始化为0,然后进行incr运算。
|->要求key所表示value必须是数值,否则,报错
incr zsage
incr age
incr zsname 报错 f)将字符串数值进行减1运算:decr key
|->返回减1运算之后的数据
|->如果key不存在,首先设置一个key,值初始化为0,然后进行decr运算。
|->要求key所表示value必须是数值,否则,报错 g)将字符串数值进行加offset运算:incrby key offset
|->返回加offset运算之后的数据
|->如果key不存在,首先设置一个key,值初始化为0,然后进行incrby运算。
|->要求key所表示value必须是数值,否则,报错
incrby zsage 10 h)将字符串数值进行减offset运算:decrby key offset
|->返回减offset运算之后的数据
|->如果key不存在,首先设置一个key,值初始化为0,然后进行decrby运算。
|->要求key所表示value必须是数值,否则,报错
decrby zsage 10 i)闭区间获取字符串key中从startIndex到endIndex的字符组成的子字符串:
getrange key startIndex endIndex
|->下标自左至右,从0开始,依次往后,最后一个字符的下标是字符串长多-1;
|->字符串中每一个下标也可以是负数,负下标表示自右至左,从-1开始,依次往前,最右边一个字符的下标是-1 zhangsan
getrange zsname 2 5 angs
getrange zsname 2 -3 angs
getrange zsname 0 -1 zhangsan j)用value覆盖从下标为startIndex开始的字符串,能覆盖几个字符就覆盖几个字符:setrange key startIndex value
setrange zsname 5 xiaosan //zhangxiaosan
setrange zsname 5 lao //zhanglaoosan k)设置字符串数据的同时,设置它最大生命周期:setex key seconds value
setex k1 20 v1 l)设置string类型的数据value到redis数据库中,当key不存在时设置成功,否则,则放弃设置:setnx key value
setnx zsage 20 m)批量将string类型的数据设置到redis中:mset 键1 值1 键2 值2 .....
mset k1 v1 k2 v2 k3 v3 k4 v4 k5 v5 n)批量从redis中获取string类型的数据:mget 键1 键2 键3.....
mget k1 k2 k3 k4 k5 k6 zsname zs age totalRows o)批量设置string类型的数据value到redis数据库中,当所有key都不存在时设置成功,否则(只要有一个已经存在),则全部放弃设置:msetnx 键1 值1 键2 值2 .....
msetnx kk1 vv1 kk2 vv2 kk3 vv3 k1 v1 3)、redis中有关list类型数据的操作命令:单key-多有序value,一个key对应多个value;
多个value之间有顺序,最左侧是表头,最右侧是表尾;
每一个元素都有下标,表头元素的下标是0,依次往后排序,最后一个元素下标是列表长度-1;
每一个元素的下标又可以用负数表示,负下标表示从表尾计算,最后一个元素下标用-1表示;
元素在列表中的顺序或者下标由放入的顺序来决定。
通过key和下标来操作数据。 a)将一个或者多个值依次插入到列表的表头(左侧):lpush key value [value value .....]
lpush list01 1 2 3 结果:3 2 1
lpush list01 4 5 结果:5 4 3 2 1 b)获取指定列表中指定下标区间的元素:lrange key startIndex endIndex
lrange list01 1 3 结果:4 3 2
lrange list01 1 -2 结果: 4 3 2
lrange list01 0 -1 结果:5 4 3 2 1 c)将一个或者多个值依次插入到列表的表尾(右侧):rpush key value [value value .....]
rpush list02 a b c 结果:a b c
rpush list02 d e 结果:a b c d e
lpush list02 m n 结果: n m a b c d e d)从指定列表中移除并且返回表头元素:lpop key
lpop list02 e)从指定列表中移除并且返回表尾元素:rpop key
rpop list02 f)获取指定列表中指定下标的元素:lindex key index
lindex list01 2 结果:3 g)获取指定列表的长度:llen key
llen list01
h)根据count值移除指定列表中跟value相等的数据:lrem key count value
|->count>0:从列表的左侧移除count个跟value相等的数据;
|->count<0:从列表的右侧移除count个跟vlaue相等的数据;
|->count=0:从列表中移除所有跟value相等的数据 lpush list03 a a b c a d e a b b 结果:b b a e d a c b a a
lrem list03 2 a 结果:b b e d c b a a
lrem list03 -1 a 结果:b b e d c b a
lrem list03 0 a 结果:b b e d c b i)截取指定列表中指定下标区间的元素组成新的列表,并且赋值给key:ltrim key startIndex endIndex
lpush list04 1 2 3 4 5 结果:5 4 3 2 1
ltrim list04 1 3
lrange list04 0 -1 结果:4 3 2 j)将指定列表中指定下标的元素设置为指定值: lset key index value
lset list04 1 10 l)将value插入到指定列表中位于pivot元素之前/之后的位置: linsert key before/after pivot vlaue
linsert list04 before 10 50
linsert list04 after 10 60 4)、redis中有关set类型数据的操作命令:单key-多无序value,一个key对应多个vlaue;
value之间没有顺序,并且不能重复;
通过业务数据直接操作集合: a)将一个或者多个元素添加到指定的集合中:sadd key value [value value ....]
*如果元素已经存在,则会忽略。
*返回成功加入的元素的个数
sadd set01 a b c a 结果:a b c
sadd set01 b d e b)获取指定集合中所有的元素:smembers key
smembers set01 c)判断指定元素在指定集合中是否存在:sismember key member
*存在,返回1
*不存在,返回0
sismember set01 f
sismember set01 a d)获取指定集合的长度:scard key
scard set01 e)移除指定集合中一个或者多个元素:srem key member [member .....]
*不存在的元素会被忽略
*返回成功成功移除的个数
srem set01 b d m f)随机获取指定集合中的一个或者多个元素:srandmember key [count]
|->count>0:随机获取的多个元素之间不能重复
|->count<0: 随机获取的多个元素之间可能重复
sadd set02 1 2 3 4 5 6 7 8
srandmember set02
srandmember set02 3
srandmember set02 -3 g)从指定集合中随机移除一个或者多个元素:spop key [count]
spop set02 h)将指定集合中的指定元素移动到另一个元素:smove source dest member
smove set01 set02 a i)获取第一个集合中有、但是其它集合中都没有的元素组成的新集合:sdiff key key [key key ....]
sdiff set01 set02 set03 j)获取所有指定集合中都有的元素组成的新集合:sinter key key [key key ....]
sinter set01 set02 set03 k)获取所有指定集合中所有元素组成的大集合:sunion key key [key key .....]
sunion set01 set02 set03 5)、redis中有关hash类型数据的操作命令:单key:field-value
field-value
.....
studentzs:id-1001
name-zhangsan
age-20
a)将一个或者多个field-vlaue对设置到哈希表中:hset key filed1 value1 [field2 value2 ....]
*如果key field已经存在,把value会把以前的值覆盖掉
hset stu1001 id 1001
hset stu1001 name zhangsan age 20 b)获取指定哈希表中指定field的值:hget key field
hget stu1001 id
hget stu1001 name c)批量将多个field-value对设置到哈希表中: hmset key filed1 value1 [field2 value2 ....]
hmset stu1002 id 1002 name lisi age 20 d)批量获取指定哈希表中的field的值:hmget key field1 [field2 field3 ....]
hmget stu1001 id name age e)获取指定哈希表中所有的field和value:hgetall key
hgetall stu1002 f)从指定哈希表中删除一个或者多个field:hdel key field1 [field2 field3 ....]
hdel stu1002 name age g)获取指定哈希表中所有的filed个数:hlen key
hlen stu1001
hlen stu1002 h)判断指定哈希表中是否存在某一个field:hexists key field
hexists stu1001 name
hexists stu1002 name i)获取指定哈希表中所有的field列表:hkeys key
hkeys stu1001
hkeys stu1002 j)获取指定哈希表中所有的value列表:hvals key
hvals stu1001
hvals stu1002 k)对指定哈希表中指定field值进行整数加法运算:hincrby key field int
hincrby stu1001 age 5 l)对指定哈希表中指定field值进行浮点数加法运算:hincrbyfloat key field float
hset stu1001 score 80.5
hincrbyfloat stu1001 score 5.5 m)将一个field-vlaue对设置到哈希表中,当key-field已经存在时,则放弃设置;否则,设置file-value:hsetnx key field value
hsetnx stu1001 age 30 6)、redis中有关zset类型数据的操作命令:有序集合
本质上是集合,所有元素不能重复;
每一个元素都关联一个分数,redis会根据分数对元素进行自动排序;
分数可以重复;
既然有序集合中每一个元素都有顺序,那么也都有下标;
有序集合中元素的排序规则又列表中元素的排序规则不一样。 a)将一个或者多个member及其score值加入有序集合:zadd key score member [score member ....]
*如果元素已经存在,则把分数覆盖
zadd zset01 20 z1 30 z2 50 z3 40 z4
zadd zset01 60 z2 b)获取指定有序集合中指定下标区间的元素:zrange key startIndex endIndex [withscores]
zrange zset01 0 -1
zrange zset01 0 -1 withscores c)获取指定有序集合中指定分数区间(闭区间)的元素:zrangebyscore key min max [withscores]
zrangebyscore zset01 30 50 withscores d)删除指定有序集合中一个或者多个元素:zrem key member [member......]
zrem zset01 z3 z4 e)获取指定有序集合中所有元素的个数:zcard key
zcard zset01 f)获取指定有序集合中分数在指定区间内的元素的个数:zcount key min max
zcount zset01 20 50 g)获取指定有序集合中指定元素的排名(排名从0开始): zrank key member
zrank zset01 z4 ===>2 h)获取指定有序集合中指定元素的分数:zscore key member
zscore zset01 z4 i)获取指定有序集合中指定元素的排名(按照分数从大到小的排名):zrevrank key member
zrevrank zset01 z4 ===>1

Redis 02: redis基础知识 + 5种数据结构 + 基础操作命令的更多相关文章

  1. JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  2. Redis学习笔记之入门基础知识——五种数据类型

    1) 字符串 SET设置值,GET获取值,DEL删除值 INCR key-name将键存储的值加上1       DECR key-name将键存储的值减去1 INCRBY key-name amou ...

  3. redis学习(三)五种数据结构

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 1.string string类型是Redis最基 ...

  4. C++ 基础知识回顾(string基础、智能指针、迭代器、容器类)

    [1] string基础 [1.1] string 的构造 #include <iostream> #include <string> int main() { using n ...

  5. C# 篇基础知识4——.NET的基础概念

    C#语言是与微软的.NET框架紧密地联系在一起的,而.NET框架是微软.NET战略的核心,为了更好的理解C#语言,我们必须了解一些.NET框架的基本知识..NET框架是为开发应用程序推出的一个编程平台 ...

  6. java基础知识——程序员面试基础

    一.面向对象的特征有哪些? 答:①.抽象:抽象是忽略一个主题中与当前目标无关的那些方面,一边更充分的注意与当前目标有关的方面.抽象并不打算了解全面问题,而是选择其中的一部分,暂时不用部分细节.抽象包括 ...

  7. 【基础知识】Asp.Net基础三

    服务器端控件一般用于访问量不高的网站,要做到物尽其用. 服务器端控件: FIleUpload控件:向服务器上传文件 if (this.FileUpload1.HasFile) { // Path.Ge ...

  8. 【基础知识】ASP.NET[基础一(ashx)]

    一.ASP.NET介绍 1.ASP.NET包括: 一般处理程序(ashx):WebForm ( aspx ):MVC(Model view con~~): 2.ASP.NET的常用文件(重点): 1& ...

  9. Python基础知识之5——函数基础

    函数 函数是一个独立且封闭完成特定功能的代码块,可以在任何地方被调用.Python内置了很多函数,我们可以直接调用,使用的时候,先查询下Python的官方文档即可: http://docs.pytho ...

随机推荐

  1. 论文翻译:2021_LACOPE: Latency-Constrained Pitch Estimation for Speech Enhancement

    论文地址:延迟约束的语音增强基音估计 引用格式:Schröter H, Rosenkranz T, Escalante-B A N, et al. LACOPE: Latency-Constraine ...

  2. WebView2 通过 PuppeteerSharp 实现爬取 王者 壁纸 (案例版)

    此案例是<.Net WebView2 项目,实现 嵌入 WEB 页面 Chromium内核>文的续集. 主要是针对WebView2的一些微软自己封装的不熟悉的API,有一些人已经对 Pup ...

  3. 活动回顾|Apache DolphinScheduler x Pulsar 在线 Meetup

    关于 Apache DolphinScheduler: " Apache DolphinScheduler(Incubating) 是一个分布式去中心化.易扩展的可视化工作流任务调度系统,致 ...

  4. Silk语言-中国人自己的开源编程语言

    什么是Silk Silk语言是一门完全独立自主开发的跨平台动态类型编程语言,绝非"木兰"等套壳语言. Silk简单易学,30分钟即可掌握全部语法,让你像Python一样简单地写C/ ...

  5. 「雅礼集训 2017 Day7」跳蚤王国的宰相(树的重心)

    题面 来源 「 雅 礼 集 训 2017 D a y 7 」 跳 蚤 王 国 的 宰 相   传 统 2000   m s 1024   M i B {\tt「雅礼集训 2017 Day7」跳蚤王国的 ...

  6. 「学习笔记」单调队列优化dp

    目录 算法 例题 最大子段和 题意 思路 代码 修剪草坪 题意 思路 代码 瑰丽华尔兹 题意 思路 代码 股票交易 题意 思路 代码 算法 使用单调队列优化dp 废话 对与一些dp的转移方程,我们可以 ...

  7. metasploit进行局域网远控

    用metasploit进行局域网远程控制 Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全 ...

  8. CF-1562B- Scenes From a Memory

    Problem - 1562B - Codeforces 题意:给定一个字符串,每次操作可以选择这个字符串中的一种字符,将他们全部都减1,最多K次操作,问可以形成的字典大小最小的字符串. 题解:首先我 ...

  9. 第二十八篇:关于node.js连接数据库

    好家伙,这个不难,但是也不简单. $ cnpm install mysql 教程里是带美元符的,但是我打的时候加上美元符用不了,所以我就没用美元符了,一样能行. 还有,淘宝镜像,yyds, var m ...

  10. ubuntu 搭建网络文件系统

    一.安装 miniserver sudo curl -L https://github.com/svenstaro/miniserve/releases/download/v0.4.1/miniser ...