redis总结

1.redis数据类型

        redis使用键值对保存数据
        key:全部是字符串
        value: String类型
                   hash类型:{uname:"张三",age:"12"} 存储javaBean
                   list LinkList 链表 添加/删除效率高[1,2,3,4,5]
                   set集合 ['a','b']
                   有序的set集合[5000 'a',1000 'b',200 'c']
2.redis命令

1.string命令
字符串在redis中是二进制安全的,和数据安全没有关系
mysql--->关系型数据库,二进制不安全【乱码丢失数据、。】

赋值操作:set key value重复操作会覆盖
取值操作:get key,如果value的值不是string,将返回错误信息
          只能获取string类型,不存在key,返回nil
删除操作:del key 返回值是一个数字类型,表示删了几条数据
          返回0,代表没有删除数据

getset key value:现获取key值,然后在设置该key的值
incr key:讲指定的key的value原子性递增1,如果key不存在 初始为0
decr key:与上面相反
append key value:拼凑字符串,如果key存在,则在其value后拼接,返回长度
incrby key 任意数字
decrby key 任意数字
**String主要用于保存json格式的字符串

2.hash命令

Hash -----》{username:"张三",age:"18",sex:"man"}-----javaBean
Hash特点: 占用磁盘的空间小
赋值操作:
hset key field value   例如: hset hash1 uname zhangsan
hmset key field value key field value....多个值
取值:
hget key field
hmget key field1 field2...
hgetall key: 获取key中的所有value值
删除:
hdel key field....删除一个或者多个,如果hash里面没有字段,整个hash都没有了
del key:删除整个hash
其他:
hincrby key field 任意数字
hexists key field 判断字段是否存在,存在返回1,不存在返回0
hlen key: 获取字段数
hkeys key:获取所有字段
hvals key: 获取所有值

3.list

**redis-LinkedList重点
java list: 数组:
              优点:根据索引取值,速度极快,和数据量大小无关
              缺点:数组元素的增删,效率极低
           LinkedList
              缺点:根据索引取值,效率极低
              优点:元素增删,效率极高,增删速度和数据量大小无关
为什么redis选择链表?
redis操作中,最多的操作是进行元素的增删
使用环境:大数据集合的增删
          任务队列
添加:
lpush list1 a b c d
rpush list2 a b c d:在list的尾部添加元素
查询:
lrange key start end: 获取链表中从start到end的值,start,end从0开始计数
            也可为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,以此类推
删除(两端删除):
lpop key
rpop key
扩展命令:
llen key返回长度
lrem key count value(不建议使用,效率低):删除count个值为value的元素,如果count大于0
       从头向尾遍历病删除count个值为value的元素,如果count=0,删除所有值为value的元素

del key:删除整个list
lset key index value(不建议使用,效率低): 设置链表中的index的交表的元素值,0代表连头,-1代表链尾
linsert key before|after pivot value(不建议使用,效率低):在pivot元素钱或者后插入value元素
**rpoplpush resource destination 例如:rpoplpush list1 list2任务队列
#循环队列
rpoplpush list1 list1

4.set命令

set---命令
在Java中,无序,不重复
redis操作中,设计两个大数据集合的交集,并集,差集,需要set
赋值操作:
sadd key values values2...
删除:
srem key m1 m2...
取值;
smembers key:取出所有
sismember key member(判断是否为会员):判断某个元素是否存在集合中,存在返回1,不存在返回0
**集合的差集运算
sdiff key1 key2...:返回key1与key2相差的成员,而且与key的顺序有关
交集
sinter key1 key2...: 返回交集部分
并集(属于key1,或者key2)
sunion key1 key2...
扩展:
scard key :获取set中成员数量
srandmember key: 随机返回set集合中的一个成员
sdiffstore destination key1 key2: 将两个集合的差集存储在destination
sinterstore destination key1 key2: 将两个集合的交集存储在destination
sunionstore destination key1 key2: 将两个集合的并集存储在destination

5.有序set命令

redis---有序set(排行榜)
有序set  不重复
赋值:
zadd key score member score2 member2...已经存在的会覆盖(默认由小到大排序)
查看:
zscore key member: 获取制定成员的分数
zcard key:获取集合元素数量
删除:
zrem key member...删除制定或者多个成员
查询:
zrange key start end [withscores]: 获取集合中start-end成员
zrange key start end withscores
zrevrange key start stop [withscores]:翻转,即从大到小。排行榜
zremrangebyrank key start stop: 按照范围删除
zremrangebyscore key min max :按照分数范围删除
zrangebyscore key min max [withscores] [limit s n]: 根据分数分页查询
zincrby key 任意数字 member: 设置指定成员增加
zcount key min max: 获取范围内的元素
zrank key member:返回成员在集合中的排名:索引,从小到大
zrevrank key member: 翻转排序,索引,从大到小
 

6.通用redis命令

keys pattern: 获取所有与pattern匹配的key
         通配符:*代表0个或多个任意字符,例如: keys *name*
                 ?一个任意字符,例如:keys ????

del key1 key2...:删除制定的key
exists key: 判断key是否存在,0代表不存在,1代表存在
rename key newkey: 重命名
expire key time: 设置key的生存时间: 单位: 秒(默认永久)
type key: 获取值类型,以字符串格式返回,不存在返回none,有序set返回zset
ttl key: 查看key还剩多少时间,返回-2表示不存在,永久为-1

7.消息订阅与发布

subscribe  channel订阅
psubscribe channel*批量订阅;例如:psubscribe my*;还有my频道的
publish  channel content:消息发布,返回接收端数量

8.数据库操作

redis也是有数据库的,提前创建好了
默认有16个数据库,0,1,2.。。15
在redis所做的所有数据操作默认在0号数据库上,
切换数据库:
select 数据库名
数据库与数据库不能共享键值对
如何把某个键值对进行数据库移植:
    move key 库名
数据库的清空:flushdb
redis服务器数据清空:flushall

9.redis事务操作---实则为批量操作,并不会因为一条语句错误就会回滚

redis事务: 目的是为了进行redis语句的批量执行
multi: 开启事务
exec: 提交事务
discard: 事务回滚

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值