ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis学习笔记

2021-07-02 22:02:58  阅读:184  来源: 互联网

标签:set mylist keys Redis 笔记 学习 集合 num mysort


Redis的数据结构:

        String(字符串)
        hash(哈希/链表/字典-php关联数组)
        list(字符串列表-php索引数组[先进后出])
        set(无序字符串集合)
        sorted set(有序字符串集合)


1.Redis的数据结构之字符串:

        set person jack 赋值增加一个键值对

        del person 删除

        get person 查询

        getset person jason, 修改person值为jason

        incr num,如果没有num这个键则初始化为0,并+1,必须为数字类型

        decr num2,如果没有num这个键则初始化为0,并-1,必须为数字类型

        incrby num 5,给num加指定的数值5

        decrby num 3,给num减3

        append num 5,给num追加5这个字符串,结果为35


2.Redis的数据结构之hash(哈希):

        hset myhash username jack #设置一个键值对

        hset myhash age 18 

        hmset myhash2 username rose age 21 #设置多个键值对

        hget myhash username #获取一个键的值

        hmget myhash username age #获取多个hash键位的数据

        hgetall myhash 获取某个hash的所有键值对

        hdel myhash2 username age #删除特定的键值

        hgetall myhash2 #获取myhash2的所有键值对

        del myhash #删除整个集合

        hexists myhash username 判断某个键是否存在


3.Redis的数据结构之list:

        lpush mylist a b c    list左侧添加

        rpush mylist a b c  list右侧添加

        lrange xxx 0 5     角标0到第5位 查询元素
        lrange xxx 0 -1  0到倒数第一位

        lpop mylist    左侧弹出
        rpop mylist    右侧弹出

        llen mylist   查询长度

        lpushx/rpushx mylist x    头部添加x 没有则不添加

        lrem mylist m x    从左删除m个x元素  删除list元素
        lrem mylist -m x    从右删除m个x元素
        lrem mylist 0 x     删除所有x元素

        lset mylist 3 mmm     设置(修改)角标元素

        linsert mylist before/after  [value] [insertvalue]     某个值之前/之后插入元素 

        rpoplpush mylist1 mylist2    将list1最右边的值pop到list2最左边 


4.Redis的数据结构之Set:

与List类型不同,set集合不允许出现重复的元素,Set可包含的最大元素数量是42949672

---添加/删除元素

        sadd myset a b c 1 2 3

        srem myset 1 2  

---获得集合中的元素

        smembers myset

        sismember myset a  (有就显示1,无就显示0)

---找出集合中的差集

        sadd mya1 a b c

        sadd myb1 a c 1 2

        sdiff mya1 myb1

---找出集合中的交集

        sinter

---集合中的并集:

        sunion

---扩展命令:

        获取set具体的成员数量  scard myset

        随机返回set中的一个成员 srandmember

        将两个集合相差的成员存储到其他集合上sdiffstore my1 mya1 myb1

        将两个集合的交集存储到其他集合上sinterstore my1 mya1 myb1

        将两个集合的并集存储到其他集合上sunionstore my1 mya1 myb1


5.Redis的数据结构之sorted set:

        与set类型很相似比set快,并且成员在集合的位置是有序的。

        增加:zadd    zadd mysort    80 zs 90 ls 100 ww    值相同则更新分数

        查看分数:zscore    zscore mysort zs

        计数:zcard    zcard    mysort

        遍历:zrange    zrange mysort 0 -1 按照默认顺序显示值
   
        zrange mysort 0 -1 withscores    显示值和分数

        zrevrange mysort 0 -1 withscores    逆序显示值和分数

        删除:zrem    zrem mysort ls

        zremrangebyrank mysort 0 4 按照范围进行删除

        zremrangebyscore mysort 80 90 按照分数范围进行删除

        递增:zincrby    zincrby mysort 3 ls    给ls的分数加三


6.Redis Keys的通用操作:

        启动服务:redis-server.exe  --service-start
        客户端调用: redis-cli.exe -h 127.0.0.1 -p 6379
        停止服务:redis-server.exe  --service-stop
        卸载服务: redis-server.exe  --service-uninstall
        exit  退出

---Keys的通用操作:

        keys *   -查询所有的keys

        keys my?    -查询以my开头的keys

        del mylist1 mylist2   -删除keys

        exists mylist      -判断keys是否存在,存在返回1,不存在返回0

        rename company newcompany        -重命名,把company改名为newcompany

        expire newcompany 1000         -设置keys的超时时间

        ttl newcompany     -查看keys的剩余超时时间

        type mylist    -查看keys的类型 

        flushall  清空数据库

        clear 清空当前窗口命令


7.Redis特性:

---多数据库:

        redis最大支持16个数据库,按0~15的索引排列

        默认使用的是0数据库

        select 0   选取数据库select 1

        move keyName index 将key移动到指定数据库 move mylist 1

---使用multi、exec、discard来实现事务:

        multi    开启事务(begin)
        --
        redis的一些操作等
        --
        exec   提交(commit)/discard 回滚(rollback)


事务中,所有命令都会串行执行,事务执行期间,redis不会为其它的客户端提供服务,从而保证命令原子化执行。

标签:set,mylist,keys,Redis,笔记,学习,集合,num,mysort
来源: https://blog.csdn.net/qq_36993916/article/details/118423657

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有