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

[经验分享] redis总结一

[复制链接]

尚未签到

发表于 2018-11-7 08:18:46 | 显示全部楼层 |阅读模式
  最近总结了一下自己使用过的一些数据库,包括:sql,mysql,mongodb,redi等等,跨域登录、建议词、以及一些状态等用到了redis,顺便总结了一下。
  redis是一个高性能的key-value键值数据库,redis在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)的数据,而且还能完成排序(SORT)等高级功能,在实现INCR,SETNX等功能的时候,保证了其操作的原子性,除此以外,还支持主从复制等功能。如果使用PHP脚本,需要安装PHP扩展。
  官网地址:http://redis.io/
  服务端下载地址:http://redis.io/download
  客户端下载地址:http://redis.io/clients
  1、安装
  下载 http://download.redis.io/releases/redis-2.8.9.tar.gz
  在linux下
  tar xzf redis-2.8.9.tar.gz
  cd redis-2.8.9
  make
  编译后的可执行文件在src目录中,可以使用下面的命令运行Redis
  启动服务   src/redis-server
  启动客户端  src/redis-cli
  即可
  查看redis版本的方法:
  [root@localhost redis-2.8.9]# src/redis-server --version
  Redis server v=2.8.9 sha=00000000:0 malloc=jemalloc-3.2.0 bits=64 build=a3e58cb49f1f5c7
  [root@localhost redis-2.8.9]# src/redis-cli --version
  redis-cli 2.8.9
  [root@localhost redis-2.8.9]# src/redis-cli -v
  redis-cli 2.8.9
  [root@localhost redis-2.8.9]# src/redis-server -v
  Redis server v=2.8.9 sha=00000000:0 malloc=jemalloc-3.2.0 bits=64 build=a3e58cb49f1f5c7
  部分命令包含(List类型、Hash类型、string类型)
  string类型:
  1、apend   向特定的key中追加value值,这个key可以存在,也可以不存在  append  tmpKey "zhl"  如果存在会在之后追加不存在会创建一个
  2、bitcount 计算给定字符串中被设置为1的比特位的数量,此方法归属到redis 的字符串中。备注:字符串转换为1 0 的机器码之后,出现 1 的个数。
  用在统计方面还是挺不错的比如:用户zhl一共登录五天,那么 setbit zhl 1 1 第二天则是 setbit login 2 1 第五天是 setbit 3 1
  统计五天内一共登录的次数 bitcount zhl 输出结果是  3  .注意:setbit  不可以进行set 字符串, 如果你是通过setbit 方法设置的
  像上面的zhl的值,使用get zhl 获取到的值会和你想象的不太一样
  3、decr    执行减法操作,递减一  比如:set zhlnum 4  然后执行  decr zhlnum  输出的结果是  3 如果zhlnum的值是一个字符串那么回报错
  4、decrby  方法同decr基本一致,decr方法减去的是 固定值 1, 而decrby方法减去的填写的值:比如:decrby zhlnum 3 返回值是 0
  5、incr    执行加法操作,递增一
  6、
  7、set     将字符串值 value 关联到 key, 如果 key 已经存在,将覆盖。set方法还存在一些参数,
  EX 设置过期时间(秒)        set name_ex "zhl"  EX  10   对于 name_ex的key设置10秒过期时间
  PX 设置过期时间 (毫秒)     set name_px "zhl"  PX  8000 对于 name_ex的key设置8000毫秒过期时间
  NX key不存在时,才进行设置  set name_ex "123"  返回值是 nil
  XX key存在的时,才进行设置  set name_ex "123"  get name_ex  返回值是 123
  备注:如果ex、px 或者 nx、xx同时出现,后者会覆盖前者,但是 ex、px可以和nx/xx搭配使用
  8、get     返回 key 所关联的字符串值,如果 key 不存在那么返回特殊值 nil, GET 只能用于处理字符串值,否则会返回一个错误
  9、mset    同时设置一个或多个 key-value.如果key已经存在,会覆盖,mset是原子性操作  mset name "zhl" age "25" address "Beijing China"
  10、mget    获取一个或多个 key 对应的value. mget name age address 不存在的返回 nil
  11、setex   关联key -- value,并设置生存时间     (和set方法中添加过期时间参数功能一样)
  12、setnx  将 key 的值设为 value ,当且仅当 key 不存在。 (和set方法中添加判断存在与否的参数功能一样)
  13、ttl    查看生存时间(秒)key不存在返回-2,存在但没有生存时间返回 -1 否则返回生存时间(2.8版本以前key不存在或没有生存时间都是-1)
  14、pttl   查看生存时间(毫秒)其它与 ttl相同
  15、del    删除给定的一个或者多个 key ,不存在的key返回 0 删除多个,返回的结果是成功的个数:比如:del name age address time 返回3
  16、dump   序列化给定的key的value值  经常和 restore使用
  17、exists 判断key是否存在  exists name 存在返回1 反之返回 0
  18、expire 更新生存时间,当生存时间为0时,会被自动删除 (很多时候回合set 联合使用,用于更新或设置特定字段或者某一个状态的生存时间)
  19、expireat 设置生存时间,到某一个时间戳的时间点过期
  20、pexist 移除key的生存时间 成功返回1 否则返回0
  21、perxpire   以毫秒为单位设置生存时间
  22、pexpireat  移除时间戳
  23、keys    查找符合给定模式的key,有点类似数据库的模糊查询  大数据集合中使用注意性能问题
  keys *         匹配所有的key
  keys h*llo     匹配h开头llo结尾的,*代表0个或多个字符
  keys h?llo     匹配h开头llo结尾的,*代表1个字符
  keys w[or]ld   仅仅会匹配wold wold
  24、randomkey 从当前数据库中随机返回一个key
  25、renamenx  renamenx key newkey  仅当newkey不存在时候,key重命名为newkey
  26、type    返回key的存储类型  返回结果有:none (key不存在) string (字符串) list (列表) set (集合) zset (有序集) hash (哈希表)
  27、sort    返回给定列表、集合、有序集合 key 中经过排序的元素,排序默认以数字作为对象
  最简单的 sort 使用方法是 sort key 返回键值从小到大排序的结果 和 sort key DESC 回键值从大到小排序的结果
  如果是字符串排序,需要添加修饰符  alpha  ,没有添加会报错  (error) ERR One or more scores can't be converted into double
  返回限定数量的结果集 limit  sort name alpha limit 0 3 返回3条数据
  更多的参数设定请参考:http://www.redis.cn/commands/sort.html
  Hash 类型:
  28、hset    将哈希表 key 中的域 field 的值设为 value,如果已经存在则会被覆盖  hset db redis www.redis.com
  29、hget    获取对应域 field或key中的 value    hget db redis
  30、hgetsll 返回哈希表 key 中,所有的域和值
  31、hmset   设置多个 field-value (域-值)     hset web baidu  www.baidu.com wangyi www.wangyi.com
  32、hmget   获取多个 key field 的键 域的值   hmget web baidu wangyi
  33、hdel    删除哈希表key 中的一个或多个指定域,不存在的域将被忽略
  34、hvals   返回哈希表中所有的域值  hvals web
  35、hexists 查看hash表中是否春在给定的域
  36、hincrby  hincrbyfloat  为哈希表 key 中的域 field 的值加上(浮点)增量
  37、hlen    返回哈希表 key 中域的数量
  38、hsetnx  设置 key 中的域 field 的值(field不存在)若域 field 已存在,操作无效。
  List 类型:
  39、lpush   将一个或多个值 value 插入到列表 key 的表头, lpush tmplist 1 2 3 列表的值是 3 2 1 后执行的在列表顶端 允许重复
  40、lpop    移除并返回列表 key 的头元素 lpop tmplist 返回的结果是 3
  41、lpushx  将 value 插入到列表的表头,key 存在并且是一个列表,key不存在,不进行任何操作
  42、lindex  返回列表 key 中,指定下标的元素 ,类似数组,比如:$arr=array(1,2,3)  lindex tmplist 0 相当于数组的$arr[0]
  43、linsert 将value插入到列表的某个key之前或之后 linsert tmplist before 2 "insert before" | linsert tmplist after 2 "insert after"
  44、len     计算指定key的列表的长度
  45、lrange  获取某个区间的元素 和 常用的数组一样下标从 0 开始,也可以出现负值
  46、lrem    移除指定个数的元素 比如:lpush tmpkey 'a' 'b' 'c' 'a' 'd' 'a',lrem tmpkey 2 a 从头开始计算,如果是-2 从结尾开始计算
  47、rpop    移除元素结尾的值 与 lpop 位置相反
  48、rpoplpush  弹出一个元素,然后插入到列表中   rpoplpush tmplist a b 从a中弹出,插入到b中
  49、rpush   在结尾插入元素,与lpush 位置相反
  50、rpushx  与lpushx 位置相反
  51、blpop   列表的阻塞式弹出元素,找到元素即停止,还可以添加等待的时间 0 不限定时间
  比如:lpush tmplist 'bieru' 'zhl' 'name'  lpush testlist 'zg' 'bj' 'sh' blpop tmplist list testlist 0
  返回结果是  tmplist name   第一个是来自的队列  第二个是元素
  52、brpop   同blpop执行顺序相反


运维网声明 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-631723-1-1.html 上篇帖子: 深入剖析Redis主从复制 下篇帖子: php,redis,centos5安装完全记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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