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中有关key的操作命令:
查看数据库中的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
判断key在数据库中是否存在:exists key 如果存在,则返回1;如果不存在,则返回0
exists key [key key ....] 返回值是存在的key的数量
例:exists k1
例:exists k1 k2 k3 hello
移动指定key到指定的数据库实例:move key index
例:move k 1
查看指定key的剩余生存时间:ttl key
|->如果key没有设置生存时间,返回-1
|->如果key不存在,返回-2
例:ttl k1
例:ttl k2
设置key的最大生存时间:expire key seconds
例:expire k2 20
查看指定key的数据类型:type key
例:type k1
重命名key: rename key newkey
例:rename hello k2
删除指定的key:del key [key key .....]
|->返回值是实际删除的key的数量
例:del k1 k2 k3 k4
redis中有关string类型数据的操作命令:
将string类型的数据设置到redis中:set 键 值
例:set zsname zhangsan
例:set zsage 20
例:set totalRows 100
例:set zsage 30 如果key已经存在,则后来的value会把以前的value覆盖掉.
从redis中获取string类型的数据:get 键
例:get zsname
例:get zsage
例:get totalRows
追加字符串:append key value
|->返回追加之后的字符串长度
|->如果key不存在,则新创建一个key,并且把value值设置为value。
例:set phone 1389999
例:append phone 8888
获取字符串数据的长度:strlen key
例:strlen phone
将字符串数值进行加1运算:incr key
|->返回加1运算之后的数据
|->如果key不存在,首先设置一个key,值初始化为0,然后进行incr运算。
|->要求key所表示value必须是数值,否则,报错
例:incr zsage
例:incr age
例:incr zsname 报错
将字符串数值进行减1运算:decr key
|->返回减1运算之后的数据
|->如果key不存在,首先设置一个key,值初始化为0,然后进行decr运算。
|->要求key所表示value必须是数值,否则,报错
将字符串数值进行加offset运算:incrby key offset
|->返回加offset运算之后的数据
|->如果key不存在,首先设置一个key,值初始化为0,然后进行incrby运算。
|->要求key所表示value必须是数值,否则,报错
例:incrby zsage 10
将字符串数值进行减offset运算:decrby key offset
|->返回减offset运算之后的数据
|->如果key不存在,首先设置一个key,值初始化为0,然后进行decrby运算。
|->要求key所表示value必须是数值,否则,报错
例:decrby zsage 10
闭区间获取字符串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
用value覆盖从下标为startIndex开始的字符串,能覆盖几个字符就覆盖几个字符:setrange key startIndex value
例:setrange zsname 5 xiaosan //zhangxiaosan
例:setrange zsname 5 lao //zhanglaoosan
设置字符串数据的同时,设置它最大生命周期:setex key seconds value
例:setex k1 20 v1
设置string类型的数据value到redis数据库中,当key不存在时设置成功,否则,则放弃设置:setnx key value
例:setnx zsage 20
批量将string类型的数据设置到redis中:mset 键1 值1 键2 值2 .....
例:mset k1 v1 k2 v2 k3 v3 k4 v4 k5 v5
批量从redis中获取string类型的数据:mget 键1 键2 键3.....
例:mget k1 k2 k3 k4 k5 k6 zsname zs age totalRows
批量设置string类型的数据value到redis数据库中,当所有key都不存在时设置成功,否则(只要有一个已经存在),则全部放弃设置:msetnx 键1 值1 键2 值2 .....
例:msetnx kk1 vv1 kk2 vv2 kk3 vv3 k1 v1
redis中有关list类型数据的操作命令:单key-多有序value.
一个key对应多个value;
多个value之间有顺序,最左侧是表头,最右侧是表尾;
每一个元素都有下标,表头元素的下标是0,依次往后排序,最后一个元素下标是列表长度-1;
每一个元素的下标又可以用负数表示,负下标表示从表尾计算,最后一个元素下标用-1表示;
元素在列表中的顺序或者下标由放入的顺序来决定。
通过key和下标来操作数据。
将一个或者多个值依次插入到列表的表头(左侧):lpush key value [value value .....]
例:lpush list01 1 2 3 结果:3 2 1
例:lpush list01 4 5 结果:5 4 3 2 1
获取指定列表中指定下标区间的元素: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
将一个或者多个值依次插入到列表的表尾(右侧):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
从指定列表中移除并且返回表头元素:lpop key
例:lpop list02
从指定列表中移除并且返回表尾元素:rpop key
例:rpop list02
获取指定列表中指定下标的元素:lindex key index
例:lindex list01 2 结果:3
获取指定列表的长度:llen key
例:llen list01
根据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
截取指定列表中指定下标区间的元素组成新的列表,并且赋值给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
将指定列表中指定下标的元素设置为指定值: lset key index value
例:lset list04 1 10
将value插入到指定列表中位于pivot元素之前/之后的位置: linsert key before/after pivot vlaue
例:linsert list04 before 10 50
例:linsert list04 after 10 60
redis中有关set类型数据的操作命令:单key-多无序value
一个key对应多个vlaue;
value之间没有顺序,并且不能重复;
通过业务数据直接操作集合。
将一个或者多个元素添加到指定的集合中:sadd key value [value value ....]
*如果元素已经存在,则会忽略。
*返回成功加入的元素的个数
例:sadd set01 a b c a 结果:a b c
例:sadd set01 b d e
获取指定集合中所有的元素:smembers key
例:smembers set01
判断指定元素在指定集合中是否存在:sismember key member
*存在,返回1
*不存在,返回0
例:sismember set01 f
例:sismember set01 a
获取指定集合的长度:scard key
例:scard set01
移除指定集合中一个或者多个元素:srem key member [member .....]
*不存在的元素会被忽略
*返回成功成功移除的个数
例:srem set01 b d m
随机获取指定集合中的一个或者多个元素: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
从指定集合中随机移除一个或者多个元素:spop key [count]
例:spop set02
将指定集合中的指定元素移动到另一个元素:smove source dest member
例:smove set01 set02 a
获取第一个集合中有、但是其它集合中都没有的元素组成的新集合:sdiff key key [key key ....]
例:sdiff set01 set02 set03
获取所有指定集合中都有的元素组成的新集合:sinter key key [key key ....]
例:sinter set01 set02 set03
获取所有指定集合中所有元素组成的大集合:sunion key key [key key .....]
例:sunion set01 set02 set03
redis中有关hash类型数据的操作命令:单key:field-value
field-value
studentzs:id-1001
name-zhangsan
age-20
将一个或者多个field-vlaue对设置到哈希表中:hset key filed1 value1 [field2 value2 ....]
*如果key field已经存在,把value会把以前的值覆盖掉
例:hset stu1001 id 1001
例:hset stu1001 name zhangsan age 20
获取指定哈希表中指定field的值:hget key field
例:hget stu1001 id
例:hget stu1001 name
批量将多个field-value对设置到哈希表中: hmset key filed1 value1 [field2 value2 ....]
例:hmset stu1002 id 1002 name lisi age 20
批量获取指定哈希表中的field的值:hmget key field1 [field2 field3 ....]
例:hmget stu1001 id name age
获取指定哈希表中所有的field和value:hgetall key
例:hgetall stu1002
从指定哈希表中删除一个或者多个field:hdel key field1 [field2 field3 ....]
例:hdel stu1002 name age
获取指定哈希表中所有的filed个数:hlen key
例:hlen stu1001
例:hlen stu1002
判断指定哈希表中是否存在某一个field:hexists key field
例:hexists stu1001 name
例:hexists stu1002 name
判断指定哈希表中是否存在某一个field:hexists key field
例:hkeys stu1001
例:hkeys stu1002
获取指定哈希表中所有的value列表:hvals key
例:hvals stu1001
例:hvals stu1002
对指定哈希表中指定field值进行整数加法运算:hincrby key field int
例:hincrby stu1001 age 5
对指定哈希表中指定field值进行浮点数加法运算:hincrbyfloat key field float
例:hset stu1001 score 80.5
例:hincrbyfloat stu1001 score 5.5
将一个field-vlaue对设置到哈希表中,当key-field已经存在时,则放弃设置;否则,设置file-value:hsetnx key field value
例:hsetnx stu1001 age 30
redis中有关zset类型数据的操作命令:有序集合
本质上是集合,所有元素不能重复;
每一个元素都关联一个分数,redis会根据分数对元素进行自动排序分数可以重复;
既然有序集合中每一个元素都有顺序,那么也都有下标;
有序集合中元素的排序规则又列表中元素的排序规则不一样。
)将一个或者多个member及其score值加入有序集合:zadd key score member [score member ....]
*如果元素已经存在,则把分数覆盖
例:zadd zset01 20 z1 30 z2 50 z3 40 z4
例:zadd zset01 60 z2
获取指定有序集合中指定下标区间的元素:zrange key startIndex endIndex [withscores]
例:zrange zset01 0 -1 withscores
获取指定有序集合中指定分数区间(闭区间)的元素:zrangebyscore key min max [withscores]
例:zrangebyscore zset01 30 50 withscores
删除指定有序集合中一个或者多个元素:zrem key member [member......]
例:zrem zset01 z3 z4
获取指定有序集合中所有元素的个数:zcard key
例:zcard zset01
获取指定有序集合中分数在指定区间内的元素的个数:zcount key min max
例:zcount zset01 20 50
获取指定有序集合中指定元素的排名(排名从0开始): zrank key member
例:zrank zset01 z4 ===>2
获取指定有序集合中指定元素的分数:zscore key member
例:zscore zset01 z4
获取指定有序集合中指定元素的排名(按照分数从大到小的排名):zrevrank key member
例:zrevrank zset01 z4 ===>1
这篇关于Redis的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
您可能喜欢
阿里云Redis项目实战入门教程
11-08
阿里云Redis资料:新手入门与初级使用指南
11-08
阿里云Redis教程:新手入门及实用指南
11-08
阿里云Redis学习入门:新手必读指南
11-07
阿里云Redis学习入门:从零开始的操作指南
11-07
阿里云Redis学习:初学者指南
11-07
阿里云Redis入门教程:轻松搭建与使用指南
11-06
Redis项目实战:新手入门教程
11-02
Redis入门教程:轻松掌握数据存储与操作
10-22
Redis缓存入门教程:快速掌握Redis缓存基础知识
10-22
Redis入门指南:轻松掌握Redis基础操作
10-22
Redis Quicklist 竟让内存占用狂降50%?
10-22
Redis学习:从入门到初级应用教程
10-17
Redis入门:新手必读教程
10-12
阿里云Redis项目实战:新手入门教程
09-26
栏目导航
前端开发
HTML5教程
CSS教程
Javascript
jQuery教程
AJAX教程
Node.js教程
XML教程
正则表达式
后端开发
Go教程
C/C++教程
消息队列MQ
Net Core教程
Asp.net教程
Java教程
PHP教程
移动端开发
微信公众号开发
小程序开发
Swift教程
IOS教程
Kotlin教程
Android开发
数据库
Redis教程
MongoDB教程
PostgreSQL教程
Oracle教程
MariaDB教程
SqLite教程
MySql教程
SqlServer教程
服务器运维
Kubernetes
Docker容器
linux shell
Nginx教程
网站安全
PowerShell教程
Linux教程
人工智能
TensorFlow教程
Python教程
机器学习
人工智能学习
区块链
区块链技术
游戏开发
游戏编程
Unity3D教程
网站运营
网站策划
网站优化
建站知识
大数据/云计算
云计算
Hadoop教程
软件工程
软件/开发工具使用
Git教程
资讯