通过上两篇的介绍,我们的redis服务器基本跑起来。db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简单且常用的string开始。

1、新增

a)set

语法:set key value

解释:把值value赋给key,如果key不存在,新增;否则,更新

  1. [root@xsf001 ~]# redis-cli
  2. redis 127.0.0.1:6379> set user.1.name zhangsan #设置user.1.name 为zhangsan
  3. OK
  4. redis 127.0.0.1:6379> set user.name 45      #设置user.1.name 为45
  5. OK

b)setnx

语法:setnx key value

解释:只insert不update,即,仅仅key不存在时,则设置key的值为value,并返回1,否则返回0  。setnx 是set if not exists 的缩写

  1. redis 127.0.0.1:6379> setnx user.1.name zhangsan   #user.1.name已经存在,则返回0
  2. (integer) 0
  3. redis 127.0.0.1:6379> setnx user.2.name zhangsan  #user.2.name不存在,则设置
  4. (integer) 1

c)setex

语法: setex key seconds value

解释:设置key的过期时间和值。过期时间seconds单位是秒。设置过期时间和值是原子操作,如果redis仅仅当做缓存,这个很命令很有用。

  1. redis 127.0.0.1:6379> setex user.2.age 2 14  #把user.2.age 的值设14 并且2秒后过期失效
  2. OK
  3. redis 127.0.0.1:6379> get user.2.age  #失效前
  4. "14"
  5. redis 127.0.0.1:6379> get user.2.age #失效后
  6. (nil)

d)mset

语法:mset key value [key value ...]

解释:同时设置多个key-value

  1. redis 127.0.0.1:6379> mset user.4.name lisi user.4.age 34  #设置user.4.name=lisi,user.4.age=34
  2. OK
  3. redis 127.0.0.1:6379> get user.4.name
  4. "lisi"
  5. redis 127.0.0.1:6379> get user.4.age
  6. "34"

e)msetnx

语法:msetnx key value [key value ...]

解释:所有key都不存在才执行set操作

  1. redis 127.0.0.1:6379> msetnx user.4.name lisi user.4.age 34  #key 都设置过,无法再次set
  2. (integer) 0
  3. redis 127.0.0.1:6379> msetnx user.4.name lisi user.4.std 3   #key user.4.name 曾设置过,无法再次设置
  4. (integer) 0
  5. redis 127.0.0.1:6379> msetnx user.4.tech lisi user.4.std 3   #key都没有设置过,可以再次设
  6. (integer) 1

2、查询

a)get

语法:get key

解释:获取key所set的值

  1. redis 127.0.0.1:6379> get user.4.name  #获取user.4.name 的值
  2. "lisi"
  3. redis 127.0.0.1:6379> get user.4.age
  4. "34"
  5. redis 127.0.0.1:6379> get user.4.tech
  6. "lisi"
  7. redis 127.0.0.1:6379> get user.4.std
  8. "3"

b)mget

语法: get key [key]

解释:批量获取key的值。程序一次获取多个值,可以减少网络连接损耗。

  1. redis 127.0.0.1:6379> mget user.4.name user.4.age user.4.std #批量获取存在key的值
  2. 1) "lisi"   #user.4.name的值
  3. 2) "34"     #user.4.age 的值
  4. 3) "3"      #user.4.std 的值
  5. redis 127.0.0.1:6379> mget user.4.name user.4.age user.4.std user.4.fri  #key user.4.fri 不存在仍然可以返回
  6. 1) "lisi"
  7. 2) "34"
  8. 3) "3"
  9. 4) (nil) #user.4.fri 的值

c)getrange

语法:getrange key star end

解释:获取存储在key中value的字串。字符串的截取有star和end决定,字符串的第一个字符编号是0,第二个是1,一次类推;如果是负数,-1是最后一个字符,-2是倒数第二个字符,一次类推。

  1. redis 127.0.0.1:6379> get user.4.name
  2. "lisi"
  3. redis 127.0.0.1:6379> getrange user.4.name 0 3  # 0 表示开始
  4. "lisi"
  5. redis 127.0.0.1:6379> getrange user.4.name 1 2
  6. "is"
  7. redis 127.0.0.1:6379> getrange user.4.name 1 -2 #-2 表示倒数第二
  8. "is"
  9. redis 127.0.0.1:6379> getrange user.4.name -1 -2  # end 》 start
  10. ""
  11. redis 127.0.0.1:6379> getrange user.4.name 1 66  #end 》 值的长度
  12. "isi"

3、修改

a)getset

语法:getset key value

解释:设置key的值,并返回key的旧值。

  1. redis 127.0.0.1:6379> get user.4.name   #存在的key
  2. "lisi"
  3. redis 127.0.0.1:6379> getset user.4.name wangwu  #把存在的user.4.name设置为wagnwu
  4. "lisi"
  5. redis 127.0.0.1:6379> get user.4.name
  6. "wangwu"
  7. redis 127.0.0.1:6379> get user.5.name  #不存在的key
  8. (nil)
  9. redis 127.0.0.1:6379> getset user.5.name lisi
  10. (nil)
  11. redis 127.0.0.1:6379> get user.5.name
  12. "lisi"

b) append

语法:append key value

解释:key存在,在旧值的后面追加value;key不存在,直接set

  1. redis 127.0.0.1:6379> get user.4.name #存在的key
  2. "wangwu"
  3. redis 127.0.0.1:6379> append user.4.name 01
  4. (integer) 8
  5. redis 127.0.0.1:6379> get user.4.name
  6. "wangwu01"
  1. redis 127.0.0.1:6379> get user.6.name #不能存在的key
  2. (nil)
  3. redis 127.0.0.1:6379> append user.6.name jim
  4. (integer) 3
  5. redis 127.0.0.1:6379> get user.6.name
  6. "jim"

c)setrange

语法:setrange key offset value

解释:用value重写key值的一部分,偏移量由offset指定

  1. redis 127.0.0.1:6379> get user.4.name  #key存在
  2. "wangwu01"
  3. redis 127.0.0.1:6379> setrange user.4.name 0 lisi
  4. (integer) 8
  5. redis 127.0.0.1:6379> get user.4.name
  6. "lisiwu01"
  7. redis 127.0.0.1:6379> setrange user.4.name 9 lisi  # offset 》字符串长度
  8. (integer) 13
  9. redis 127.0.0.1:6379> get user.4.name
  10. "lisiwu01\x00lisi"
  11. redis 127.0.0.1:6379> setrange user.4.name 8 lisi
  12. (integer) 13
  13. redis 127.0.0.1:6379> get user.4.name
  14. "lisiwu01lisii"
  15. redis 127.0.0.1:6379> get user.6.std #key 不存在
  16. (nil)
  17. redis 127.0.0.1:6379> setrange user.6.std 0 3
  18. (integer) 1
  19. redis 127.0.0.1:6379> get user.6.std
  20. "3"

d)incr

语法:incr key

解释:key中如果存储的是数字,则可以通过incr递增key的值,返回递增后的值。如果key不能存在,视为初始值为0

  1. redis 127.0.0.1:6379> get user.7.age #key不存在 ,初始值视为0,
  2. (nil)
  3. redis 127.0.0.1:6379> incr user.7.age
  4. (integer) 1
  5. redis 127.0.0.1:6379> get user.7.age
  6. "1"
  7. redis 127.0.0.1:6379> incr user.7.age
  8. (integer) 2

e)incrby

语法:incrby key increment

解释:用指定的步长增加key存储的数字。如果步长increment是负数,则减

  1. redis 127.0.0.1:6379> get user.7.age
  2. "3"
  3. redis 127.0.0.1:6379> incrby user.7.age 15  #增加15
  4. (integer) 18
  5. redis 127.0.0.1:6379> get user.7.age
  6. "18"
  7. redis 127.0.0.1:6379> incrby user.7.fri 18  #key不能存在,原值视为0
  8. (integer) 18
  9. redis 127.0.0.1:6379> get user.7.fri
  10. "18"
  11. redis 127.0.0.1:6379> incrby  user.7.age -1  #步长为负
  12. (integer) 17
  13. redis 127.0.0.1:6379> get user.7.age
  14. "17"

f)decr

语法:decr key

解释:递减key保存的数字,如果key不存在,初始值视为0

  1. redis 127.0.0.1:6379> get user.7.age
  2. "17"
  3. redis 127.0.0.1:6379> decr user.7.age
  4. (integer) 16
  5. redis 127.0.0.1:6379> decr user.7.num #key 不存在,初始值视为0
  6. (integer) -1
  7. redis 127.0.0.1:6379> decr user.7.num
  8. (integer) -2

g)decrby

语法:decrby key decrement

解释:用指定的步长递减key的值,如果步长decrment是负值,则递增

  1. redis 127.0.0.1:6379> decrby user.7.num 4  #递减
  2. (integer) -6
  3. redis 127.0.0.1:6379> decrby user.7.num -9 #负值,递增
  4. (integer) 3

注意:递增递减系列的函数,只能对保存的是数字的key操作,不能是字符串

4)删除

语法:del key [key]

解释:删除指定的key,返回删除key的个数

  1. redis 127.0.0.1:6379> del user.7.num
  2. (integer) 1
  3. redis 127.0.0.1:6379> get user.7.num
  4. (nil)
  5. redis 127.0.0.1:6379> del user.7.age user.7.fri #删除多个key
  6. (integer) 2
  7. redis 127.0.0.1:6379> mget user.7.age user.7.fri
  8. 1) (nil)
  9. 2) (nil)

5)其他

语法:strlen key

解释:获取key中所存储值的长度

  1. redis 127.0.0.1:6379> get user.1.name
  2. "45"
  3. redis 127.0.0.1:6379> strlen user.1.name  #user.1.name 长度
  4. (integer) 2
  5. redis 127.0.0.1:6379> strlen user.8.name #key不存在
  6. (integer) 0

通过上面的大量demo,对string的操作基本总结完毕。今天就到这里吧!

更多信息,请参考:http://redis.io/commands#string

Redis系列-存储篇string主要操作函数小结的更多相关文章

  1. Redis系列-存储篇hash主要操作函数小结

    阳光透过玻璃,洒在身上,一杯暖茶在手,说不尽的安逸自得,让我有种想再写篇blog的冲动.上篇主要谈了string,这里谈谈hash吧!hash是一些列key value(field value)的映射 ...

  2. Redis系列-存储篇set主要操作函数小结

    最近,总是以“太忙“为借口,很久没有blog了,凡事贵在恒,希望我能够坚持不懈,毕竟在blog的时候,也能提升自己.废话不说了,直奔主题”set“ redis set 是string类型对象的无序集合 ...

  3. Redis系列-存储篇list主要操作函数小结

    在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ...

  4. Redis系列-存储篇list主要操作函数小结(转)

    在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ...

  5. Redis系列-存储篇string主要操作命令

    Redis系列-存储篇string主要操作命令 通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简 ...

  6. Redis系列-存储篇sorted set主要操作命令

    Redis系列-存储篇sorted set主要操作函数小结 redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sort ...

  7. Redis系列-存储篇list主要操作命令

    Redis系列-存储篇list主要操作命令小结 在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素 ...

  8. Redis系列-存储篇sorted set主要操作函数小结

    redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sorted set的常用函数: 1)insert a)  zadd ...

  9. Redis系列-存储hash主要操作命令

    Redis系列-存储篇hash主要操作函数小结 hash是一些列key value(field value)的映射表.常常用其存储一些对象实例.相对于把一个对象的各个字段存储为string,存储为ha ...

随机推荐

  1. WCF入门教程(vs2010)

    这几天挺别人提起WCF,鄙人之前只知道WPF,对WCF这个东东不甚了解,经过查阅网上的资料略有所得,和大家交流一下. 首先WCF是什么? Windows Communication Foundatio ...

  2. Eclipse中配置Tomcat服务器

    在首先外部安装好tomcat,然后在eclipse配置Tomcat服务器: 选择要配置的tomcat版本: 选择tomcat的安装的路径,选择你安装的JRE: 到此tomcat服务器就算是配置好了,接 ...

  3. DHCP 工作原理

    DHCP 详解 DHCP 工作原理 一.什么是DHCP? DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server), ...

  4. CSS3_概述、发展史、模块介绍、与浏览器之间的关系

    一.CSS3概述和CSS3的发展史: 1.css3概述: CSS3是CSS2的升级版本,3只是版本号,它在CSS2.1的基础上增加了很多强大的新功能.    目前主流浏览器chrome.safari. ...

  5. jQuery中其他

    hide:  隐藏 $('img').hide(); show:显示 $('img').show(); 单选多选下拉菜单 选中状态checked ($('.radio:checked')); 单选 ( ...

  6. 【bug】“Mat map” opencv全局变量不明确

    Mat map= Mat::zeros(WIN_WIDTH, WIN_HIGH, CV_8UC3);//全局变量 int main() { map.setTo(); } Error map 不明确 s ...

  7. centos7 安装mariaDB 以及 phpmyadmin的安装

    centos7 安装mariaDB 以及 phpmyadmin的安装 一:安装mariadb, mariadb 是 mysql 的一个分支,基本和mysql一样的 1. yum -y install ...

  8. eclipse 中发布 maven 项目到 tomcat

    第一步:在 eclipse 中 右键  你的项目 Run as --> Maven build...--> Goals: 输入 install   run 第二步:在 eclipse 中 ...

  9. 2D客户端+微端技术总结

    本人于2013年9月23号加入一个页游项目组, 并作为项目组的客户端小组的主程, 带领一个4个人(峰值)的前端小组, 进行微端的开发.微端项目于2014年8月底大体完成, 历时11个月.9月份之后微端 ...

  10. selenium+python笔记2

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 操作浏览器 """ fro ...