设为首页 收藏本站
查看: 717|回复: 0

[经验分享] redis安装,语法和Python连接

[复制链接]

尚未签到

发表于 2018-8-6 09:41:19 | 显示全部楼层 |阅读模式
redis的字符串操作  

  set(key,value,ex=None,px=None,nx=False,xx=False)
  在redis中设置值,默认,不存在则创建,存在则修改
  参数:
  ex:过期时间(秒)
  px: 过期时间(毫秒)
  nx:如果设置为True,则只有key不存在时。当前set才会执行
  xx:如果设置为True,则只有key存在时,当前set才会执行
  

  setnx(key,value)
  设置值,只有key不存在时,执行设置操作
  

  setex(key,value,time)
  设置值
  参数:
  time:过期时间单位是秒
  psetex(key,value,time)
  设置值
  参数:
  time:过期时间单位是毫秒
  mset(*args,**kwargs)
  批量设置值
  如:
  mset k1 v1 k2 v2
  或者mset(k1='v1',k2='v2')
  

  getset(key,value)
  设置新值并返回原来的值
  

  getrange(key,start,end)
  获取子序列(根据字节获取,非字符)
  参数:
  key: redis的key
  start:起始位置(字节)
  end:  结束位置(字节)
  如:“张三”,0-3表示“张”
  setrange(key,offset,value)
  修改字符串内容。从指定字符串索引开始向后替换(新值太长时,则向后添加)
  参数:
  offset: 字符串的索引,字节(一个汉字三个字节)
  value:  要设置的值
  

  setbit(key,offset,value)
  对key对应的二进制表示的位进行操作
  参数:
  key:  redis的key
  offset:位的索引(将值变为二进制后再进行索引)
  value:   值只能是0或1
  例:
  如果在redis中有一个对应:n1 = "foo"
  那么字符串“foo”的二进制表示为:01100110 01101111 01101111
  如果执行setbit('n1',7,1)则就会将第七位设置为1
  那么最终二进制则变成 01100111 01101111 01101111 即“goo”
  代码实现
  127.0.0.1:6379> set n1 foo
  OK
  127.0.0.1:6379> setbit n1 7 1
  (integer) 0
  127.0.0.1:6379> get n1
  "goo"
  127.0.0.1:6379>
  用处:
  如QQ统计在线人数,并且看谁在线:
  让1代表在线。0代表不在线
  offset代表用户对应的ID
  如果用户上线,则将该ID设置为1
  用bitcount统计有多少个1,即有多少用户在线
  用getbit查看用户是否在线
  代码实现:
  127.0.0.1:6379> setbit QQ 55 1
  (integer) 0
  127.0.0.1:6379> setbit QQ 1000 1
  (integer) 0
  127.0.0.1:6379> bitcount QQ
  (integer) 2
  127.0.0.1:6379> getbit QQ 55
  (integer) 1
  127.0.0.1:6379>  getbit QQ 66
  (integer) 0
  127.0.0.1:6379>
  

  append(key,value)
  在redis,key对应的值后追加
  参数:
  key:redis的key
  value: 要追加的字符串
  例子:
  127.0.0.1:6379> get zhang
  "san"
  127.0.0.1:6379> append zhang san
  (integer) 6
  127.0.0.1:6379> get zhang
  "sansan"
  127.0.0.1:6379>
  del key
  删除key
  
hash
  如果需要存一个班级的姓名等信息
  127.0.0.1:6379> hset info key duwentao
  (integer) 1
  127.0.0.1:6379> hset info age 20
  (integer) 1
  127.0.0.1:6379> hset info id 1
  (integer) 1
  127.0.0.1:6379> hgetall info
  1) "key"
  2) "duwentao"
  3) "age"
  4) "20"
  5) "id"
  6) "1"
  127.0.0.1:6379> hget info age
  "20"
  127.0.0.1:6379> hkeys info  #查看有多少key
  1) "key"
  2) "age"
  3) "id"
  127.0.0.1:6379> hvals info #查看有多少value
  1) "duwentao"
  2) "20"
  3) "1"
  hmset key field value [field value ...]
  用法:
  127.0.0.1:6379> hmset li k1 v1 k2 v2 k3 v3
  OK
  127.0.0.1:6379> hgetall li
  1) "k1"
  2) "v1"
  3) "k2"
  4) "v2"
  5) "k3"
  6) "v3"
  hget key field
  在key对应的hash中获取根据key获取value
  hmget key field [field ...]
  用法:
  127.0.0.1:6379> hmget li k1 k2
  1) "v1"
  2) "v2"
  hlen(key)
  获取有几个key
  hkeys(key)
  获取key对应的hash中所有key的值
  hvals(key)
  获取key对应的hash中所有的value值
  hexists key field
  检查key对应的hash是否存在当前传入的key
  hincrby key field increment
  自增加
  127.0.0.1:6379> hincrby info age 1
  (integer) 21
  127.0.0.1:6379>  hincrby info age 1
  (integer) 22
  hscan key cursor [MATCH pattern] [COUNT count]
  起到一个过滤的作用
  如  hscan info 0 match *a*
  
列表:
  lpush(从左边放)和rpush(从右边放)
  127.0.0.1:6379> lpush keys1 zhangsan lisi wanger
  (integer) 3
  127.0.0.1:6379>  LRANGE keys1 0 -1
  1) "wanger"
  2) "lisi"
  3) "zhangsan"
  127.0.0.1:6379> RPUSH keys2 zhangsan lizi wanger
  (integer) 3
  127.0.0.1:6379>  LRANGE keys2 0 -1
  1) "zhangsan"
  2) "lizi"
  3) "wanger"
  127.0.0.1:6379>
  lpushx key value
  在key对应的list中添加元素,只对key已经存在时,值添加到列表的最左边
  rpushx key value
  在key对应的list中添加元素,只对key已经存在时,值添加到列表的最右边
  llen key
  key对应的list元素个数
  LINSERT key BEFORE|AFTER pivot value
  在key对应的列表的某一个值前或后插入一个新值
  参数:
  key:            redis的key
  BEFORE|AFTER:   在什么或者后
  privot:         标杆值,即在他前后插入数据
  value:          要插入的数据
  lset key index value
  对key对应的list中的某一个索引位置进行重新赋值
  参数:
  key:  redis的key值
  index:list的索引位置
  value:要设置的值
  lrem key count value
  在key对应的list中删除指定的值
  参数:
  key:redis的key
  value:要删除的值
  count:
  count=0: 删除列表中所有的指定的值
  count=2: 从前向后,删除两个
  count=-2:从后向前,删除两个
  

  lpop key
  在key对应的列表的左侧获取第一个元素并在列表中删除,返回值则是第一个元素。
  lindex key index
  在key中对应的列表中根据索引获取列表元素
  LRANGE key start stop
  在key对应的列表分片获取数据
  参数:
  key:  redis的key
  start:索引的起始位置
  end:  索引的结束位置
  LTRIM key start stop
  在key对应的列表中移除没有在start stop索引之间的值
  参数:
  key:redis的key
  start:索引的起始位置
  stop:索引的结束位置
  RPOPLPUSH source destination
  从一个表中取出最右边的元素,同时将其添加至另一个列表的最左边
  参数:
  source:     要取出数据的列表的key
  destination:要添加数据的列表的key
  BRPOPLPUSH source destination timeout
  从一个列表的右侧移除一个元素并将其添加到另一个列表的左侧
  参数:
  source:取出并移除元素的列表对应的key
  destination:要插入元素的列表对应的key
  timeout:当source对应的列表中没有数据时,阻塞等待其数据的超时时间(秒),0表示永远堵塞
  
集合:
  sadd key member [member ...]
  key对应的集合中添加元素(无重复,无序)
  如:
  127.0.0.1:6379> sadd names3 zhangsan zhangsan lisi lisi 3 3
  (integer) 3
  127.0.0.1:6379> SMEMBERS names3 #获取所有值
  1) "3"
  2) "lisi"
  3) "zhangsan"
  scard key
  获取key对应的集合中的元素个数
  sdiff key [key ...]
  在第一个key对应的集合中且不在其他key对应的集合中的元素
  sdiffstore destination key [key ...]
  在第一个key对应的集合中且不在其他key对应的集合中的元素,把他添加到destination里
  SINTER key1 [key2]
  返回给定所有集合的交集
  SINTERSTORE destination key1 [key2]
  返回给定所有集合的交集并存储在 destination 中
  SISMEMBER key member
  判断 member 元素是否是集合 key 的成员
  SMEMBERS key
  返回集合中的所有成员
  SMOVE source destination member
  将 member 元素从 source 集合移动到 destination 集合
  SPOP key
  移除并返回集合中的一个随机元素
  SRANDMEMBER key [count]
  返回集合中一个或多个随机数
  SREM key member1 [member2]
  移除集合中一个或多个成员
  SUNION key1 [key2]
  返回所有给定集合的并集
  SUNIONSTORE destination key1 [key2]
  所有给定集合的并集存储在 destination 集合中
  SSCAN key cursor [MATCH pattern] [COUNT count]
  迭代集合中的元素
  
有序集合:
  ZADD key score1 member1 [score2 member2]
  向有序集合添加一个或多个成员,或者更新已存在成员的分数
  ZCARD key
  获取有序集合的成员数
  ZCOUNT key min max
  计算在有序集合中指定区间分数的成员数
  ZINCRBY key increment member
  有序集合中对指定成员的分数加上增量 increment
  ZINTERSTORE destination numkeys key [key ...]
  计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
  ZLEXCOUNT key min max
  在有序集合中计算指定字典区间内成员数量
  ZRANGE key start stop [WITHSCORES]
  通过索引区间返回有序集合成指定区间内的成员
  ZRANGEBYLEX key min max [LIMIT offset count]
  通过字典区间返回有序集合的成员
  ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
  通过分数返回有序集合指定区间内的成员
  ZRANK key member
  返回有序集合中指定成员的索引
  ZREM key member [member ...]
  移除有序集合中的一个或多个成员
  ZREMRANGEBYLEX key min max
  移除有序集合中给定的字典区间的所有成员
  ZREMRANGEBYRANK key start stop
  移除有序集合中给定的排名区间的所有成员
  ZREMRANGEBYSCORE key min max
  移除有序集合中给定的分数区间的所有成员
  ZREVRANGE key start stop [WITHSCORES]
  返回有序集中指定区间内的成员,通过索引,分数从高到底
  ZREVRANGEBYSCORE key max min [WITHSCORES]
  返回有序集中指定分数区间内的成员,分数从高到低排序
  ZREVRANK key member
  返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
  ZSCORE key member
  返回有序集中,成员的分数值
  ZUNIONSTORE destination numkeys key [key ...]
  计算给定的一个或多个有序集的并集,并存储在新的 key 中
  ZSCAN key cursor [MATCH pattern] [COUNT count]
  迭代有序集合中的元素(包括元素成员和元素分值)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-547404-1-1.html 上篇帖子: Python 常用模块学习 下篇帖子: Python2.x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表