Redis学习第一天

Redis:远程字典服务

1,redis是一个高级的key-value的存储系统
2,Redis支持的五种类型
String:字符串
Lists:字符串列表
Sets:字符串集合
Sorted sets:有序字符串集合(zsets)
Hashes:哈希
3,redis有两种存储方式:AOF,RDB
RDB:把Redis的数据存储到磁盘上
AOF:把Redis中的所有操作指令记录,下次Redis重启时把所有指令再执行一遍
(AOF和RDB可同时使用,但会优先AOF,因为AOF的数据恢复度高)
(若不需使用持久化,则可以关闭AOF和RDB,Redis就会成为存内存数据库,如memcache一样)
RDB:是将某一时刻的数据持久到磁盘中,是一种快照方式的持久化
4,Redis默认服务端口:6379

学习命令
1,ping:查看当前连接是否正常,正常返回PONG
2,clear:清空cmd控制台
3,keys * :查看当前库里的所有可以
4,flushall:清空所有库的内容(慎用)
5,set nameA 111:添加一个key为nameA,nameA对应的值为111
6,get nameA:查看key为nameA的value值
7,move nameA 1:移出当前库1的key为nameA的数据
8,expire nameA 15:设置key为nameA的过期时间为15,过期后则自动删除该key
9,ttl nameA:查看过期时间
10,exists nameA:判断key为nameA的数据存不存在,存在返回1,不存在返回0
11,append nameA aaaa:给key为nameA的数据后追加aaa,
12,append nameA “hh jjj”:追加的数据有空格需要用双引号包括
13,exists nameA :判断key为nameA的数据存不存在,存在返回1 ,不存在返回0
14,append nameA aaaa:给key为nameA的数据后追加aaa,
15,append nameA “hh jjj”:追加的数据有空格需要用双引号包括
16,set nameB 0 :插入一个初始值为0的数据
17,incr nameB :指定key为nameB的数据自增1,会直接返回结果,1,类似java中的i++
18,decr nameB :指定key为nameB的数据自减1,会直接返回结果,类似java中的i–
19,incrby nameB 10:后面直接加上by,指定的key为nameB的数据自增参数10,会直接返回结果
20,decrby nameB 5:后面直接加上by,指定的key为nameB的数据自减参数5,会直接返回结果
21,getrange nameA 0 1:截取字符串,相当于java中的subString,下标为0,不会改变原有数据
22,setrange nameA 2 hhhh:与java中的replace类似,下标从0开始,不过若替换的大于数值,则直接拼接
23,setnx nameD 12 :【如果key为nameD的不存在,这新增数据,返回1说明成功,若有nameD则添加失败,返回0
(跟set的区别是:set会替换原有的值,而setnx不会,存在即不设置,确保了数据误操作~)】
24,mset A1 aa A3 bb:插入多条数据(A1为可用 aa 为值,可添加多个)
25,mget A1 A3:查看key为A1 A3的数据
26,msetnx A1 aa A3 bb :成功返回1,失败返回0,msetnx是一个原子性操作,在一定程度上保证事务,要都成功,要么都失败
27,mset student:1:name aa student:1:age 22 :建一个student对象并插入多个属性和值
28,mget student:1:name student:1:age :获取student对象中的name和age的属性值
29,getset nameA aa:先获取key,若没有该key,这添加该key并赋值,若没有该key,则替换该key的值
总结
String是Redis中最常用的一种数据类型,也是Redis中最简单的一种数据类型。首先,表面上它是字符串,但其实他可以灵活的表示字符串、整数、浮点数3种值。Redis会自动的识别这3种值。

-----------list
1,lpush list listA :建立一个listA的集合
2,lrange list 0 -1 :查看第一个到最后一个集合,(所有集合)
3,lpush listA 11 22 33 :给listA集合添加11 22 33三个数据 “显示的数据顺序为33,22 ,11”,因为时lpush左插入
4,lrange listA 0 -1 :查看listA中第一个和最后一个数据,(所有数据)
5,rpush listB 11 22 33 :给listA集合添加11 22 33三个数据 “显示的数据顺序为11,22,33”,因为时rpush右插入
6,lpop listA :从头部开始移除第一个数据
7,rpop listB :从尾部开始移除第一个数据
8,lindex listA 0:获取下标为0的数据
9,llen listA :获取指定集合listA的元素长度,类似java中的length
10,lrem listA 1 33 :移除集合listA中的元素是33的元素1个(若为0 ,这全部删除等于33的数)
11,ltrim listA 0 2:通过下标截取指定的长度,会改变list,只剩下我们截取后的元素
12,rpoplpush listA listAA:移除listA集合中的最后一个元素到新集合listAA中
13,lset listA 0 aa :更新listA集合中的下标为0的元素修改为aa数据(若指定的元素不在,则直接报错)
14,linsert listA after 33 hhh :在listA集合中33元素后添加一个数据为hhh
小结:
实际上是一个链表,before Node after , left,right 都可以插入值
如果key 不存在,创建新的链表
如果key存在,新增内容
如果移除了所有值,空链表,也代表不存在!
在两边插入或者改动值,效率最高! 中间元素,相对来说效率会低一点~
消息排队!消息队列 (Lpush Rpop), 栈( Lpush Lpop)!

----------set
1,sadd setA aa bb cc dd ee:添加setA集合(可批量,也可单个)
2,smembers setA :查看setA集合中的所有元素
3,sismember setA aa :判断aa数值在不在集合setA中,存着返回1,不存在返回0
4,scard setA :查看集合的长度,类似:size,length
5,srem setA aa :删除set中指定的元素aa,成功返回1,失败返回0
6,srandmember setA 1 :随机抽取setA中的1个元素数据返回
7,spop setA 1 :随机抽取一个元素删除,不写1,这也是默认随机删除一个
8,smove setA setB 1:随机把setA中的一个元素数据添加到setB集合中
9,sdiff setA setB :返回除了setB在setA中的其他setA中的元素(sdiff setB setA则相反)查询指定的set之间的差集
10,sinter setA setB :返回setA和setB元素的交集
11,sunion setA setB :返回setA+setB之前的并集
总结:可实现共同好友、共同关注等需求。

------------hash
1,hset hashA nameA aa :添加一个名称为hashA的对象,并添加一个nameA的属性,nameA属性的值为aa
2,hget hashA nameA :获取hashA对象nameA的属性对应的值
3,hgetall hashA :获取hashA中所有的值,包括key
4,hdel hashA del age :删除指定的hangA中的age的key,也包括删除key对应的value
5,hlen hashA :获取hashA的长度,类似length
6,hexists hashA nameA :判断key为nameA是否存在与指定的hashA中,存在返回1,不存在返回0
7,hkeys hashA :返回hashA中所有的key
8,hvals hashA :返回指定hashA中所有的value
9,hincrby hashA age 2 :给hashA中age的值添加2
10,hincrby hashA age -1 :给hashA中的age的值减1
11,hsetnx hashB nameB bb :添加不存在就新增hashB,不存在就不添加。成功返回1,不超过返回0
总结:比String更加适合存对象~

-----------zset
1,zadd zsetA 1 A 2 B 3 C :添加一个zsetA,并添加值A B C
2,zrange zsetA 0 -1 :查询zsetA中所有的值
3,zrangebyscore zsetA -inf +inf :讲zsetA中的值根据key从小到大排序
4,zrangebyscore zsetA 0 1 :子查询key<=1de zhi ,且从小到大排序
5,zrevrange zsetA 0 -1 :从大到小排序
6,zrangebyscore zsetA -inf +inf withscores :返回zsetA中的所有,例如:A 1 B 2 C 3
7,zrem zsetA C :删除指定的zsetA中的C
8,zcard zsetA :返回zsetA中的元素个数,类似size
9,zcount zsetA 0 100 :返回指定区间0~100内的元素
总结:成绩表排序,工资表排序,年龄排序等需求可以用zset来实现!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值