redis的字符串类型

redis的数据类型

redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)。

字符串类型(string

string是redis最基本的类型,这个跟memcached一样。一个key对应一个value。

字符串类型是一个很基础的数据类型。因为是二进制,所以可以吧图片文件内容作为字符串来储存。

一个键最大能储存512MB。

字符串的操作

SET key value

设置指定key的值

GET key

读取指定key的值

127.0.0.1:6379> set mystr 'hello world' //设置key的值
OK
127.0.0.1:6379> get mystr  //读取key的值
"hello world"

GETRANGE key start end

返回字符串中的子字符串

127.0.0.1:6379> getrange mystr 0 4 //获取mystr的下标为0的字符至下标为4的字符
"hello"
127.0.0.1:6379> getrange mystr 6 10//第6个字符至第10个字符
"world"

这个指令,如果超过字符串的总长度也不会报错,取到最后一个字符为止。

127.0.0.1:6379> getrange mystr 0 100 //第1个字符至第101个字符
"hello world"
127.0.0.1:6379> getrange mystr 0 -1 //第1个字符至倒数第1个字符
"hello world"
127.0.0.1:6379> getrange mystr 0 -2 //第1个字符至倒数第2个字符
"hello worl"

GETSET key value

给key设置新的value,并返回旧的value值

127.0.0.1:6379> getset mystr 'hello'  //设置mystr为'hello',获取到了旧的mystr值
"hello world"

SETBIT key offset value

对key储存的字符串值,设置或清除指定偏移量上的位(bit)。

比如:数字"1"的ASCII码值转换成二进制为00110001。那么如何把"1"变成"2"。把最后一位的1移动到前一位就好了。ASCII码值00110010就是数字"2"。

可以用作计数器。比如用户在第几天上线

setbit 用户名称 网站运行天数 1    如:setbit fhw 1 1      setbit fhw 2 1    bitcount fhw    得出用户总上线天数

127.0.0.1:6379> set mystr '1' //设置mystr的值为1
OK
127.0.0.1:6379> get mystr
"1"
127.0.0.1:6379> setbit mystr 6 1 //把从左向右数的第七位改成1
(integer) 1
127.0.0.1:6379> setbit mystr 7 0 //把从左向右数的第八位改成0
(integer) 0
127.0.0.1:6379> get mystr
"2"

GETBIT key offset

对key储存的字符串值,获取指定偏移量上的位(bit)。

比如:"1"的ASCII码为00110001。第三个参数超过了总位数都为0。

127.0.0.1:6379> set mystr '1'
OK
127.0.0.1:6379> bitget mystr 0 //获取mystr的第一位
(integer) 0
127.0.0.1:6379> bitget mystr 1 //获取mystr的第二位
(integer) 0
127.0.0.1:6379> bitget mystr 2 //获取mystr的第三位
(integer) 1
127.0.0.1:6379> bitget mystr 100 //获取mystr的第100位
(integer) 0

BITOP operation destkey key [key ..]

对一个或多个二进制字符串进行位元操作,并将结果保存在destkey上。

operation 可以是AND(并)、OR(或)、NOT(非)、XOR(异或)这四种操作中的一种。

除了NOT外,其他操作都可以接受一个或多个key作为输入。

返回值:保存到destkey 字符串长度,和输入key中最长的字符串长度相等。

BITOP进行大数据运算的时候,最好将任务指派到附属节点进行,避免阻塞主节点。

127.0.0.1:6379> setbit bit-1 0 1
127.0.0.1:6379> setbit bit-1 1 0
127.0.0.1:6379> setbit bit-1 2 0
127.0.0.1:6379> setbit bit-1 3 1
127.0.0.1:6379> setbit bit-2 0 0
127.0.0.1:6379> setbit bit-2 1 0
127.0.0.1:6379> setbit bit-2 2 1
127.0.0.1:6379> setbit bit-2 3 1
127.0.0.1:6379> bitop and result bit-1 bit-2
127.0.0.1:6379> bitcount result
127.0.0.1:6379> getbit result

MSET key1 value [key2 value..]

设置所有(一个或多个)的key值

MGET key1 [key2..]

获取所有(一个或多个)的key值

127.0.0.1:6379> mset mystr 'hello world' mystr2 'hello'
OK
127.0.0.1:6379> mget mystr mystr2 //获取所有key的值
1) "hello world"
2) "hello"

SETEX key seconds value

将value值关联到key,并将key的过期时间设置为seconds(秒为单位)

127.0.0.1:6379> setex mystr 3000 'hello world' //设置了3000秒的mystr,值为'hello world'
OK
127.0.0.1:6379> get mystr
"hello world"
127.0.0.1:6379> ttl mystr
(integer) 2984 //存在的时间

PSETEX key milliseconds value

这个跟setex命令基本相同,只不过以毫秒为单位设置key的生存时间,setex为秒单位。

127.0.0.1:6379> psetex mystr 3000 'hello world' //设置了3000毫秒的mystr,值为'hello world'
OK
127.0.0.1:6379> get mystr
"hello world"
127.0.0.1:6379> ttl mystr
(integer) 1 //存在的时间
SETNX key value

只有在key不存在时设置key的值

127.0.0.1:6379> set mystr 'hello world' 
OK
127.0.0.1:6379> setnx mystr 'hello'
(integer) 0 //设置失败
127.0.0.1:6379> setnx mystr2 'hello'
(integer) 1 //设置成功

MSETNX key value [key value ..]

同时设置一个或多个key-value,并且都当key不存在时才能成功。有一个已经存在了,都设置失败。

127.0.0.1:6379> msetnx mystr 'hello world' mystr2 'hello'
(integer) 1 //设置成功
127.0.0.1:6379> msetnx mystr2 'hello' mysr3 'world'
(integer) 0 //设置失败
127.0.0.1:6379> mget mystr mystr2
1) hello world
2) hello

SETRANGE key offset value

用value参数覆写给key所储存的字符串值,从偏移量offset开始。就是修改字符串。 如果你修改的是一个字符,那么后面其余的字符是不会改动的。

127.0.0.1:6379> set mystr 'hello world'
OK
127.0.0.1:6379> setrange mystr 6 'redis'
(integer) 11
127.0.0.1:6379> get mystr
"hello redis"
127.0.0.1:6379> setrange mystr 6 'e'
(integer) 11
127.0.0.1:6379>get mystr
"hello eedis"

STRLEN key

返回字符串的长度

127.0.0.1:6379> set mystr 'hello world'
OK
127.0.0.1:6379> strlen mystr
(integer) 11

INCR key

将key中存储的数字值加1

INCRBY key increment

将key中存储的值加上给定的增量(increment)。

DECR key

将key中存储的数字值减1

DECRBY key increment

将key中存储的值加上给定的减量(increment)。

incr等指令本身具有原子性。如果有多个客户端进行了文章的点击操作,那么最后会全部加起来。用作计数十分方便。

127.0.0.1:6379> set mynum '1'
OK
127.0.0.1:6379> incr mynum
(integer) 2
127.0.0.1:6379> incrby mynum 2
(integer) 4
127.0.0.1:6379> decr mynum
(integer) 3
127.0.0.1:6379> decrby mynum 2
(integer) 1

INCRBYFLOAT key increment

将key所储存的值加上给定的浮点增量值(increment)。

127.0.0.1:6379> set mynum '1'
OK
127.0.0.1:6379> incrbyfloat mynum 1.1
"2.1"

APPEND key value

如果key已经存在并且是一个字符串,APPEND指令将指定的value追加到该key原来值(value)的末尾。

如果key不存在,那么就当做set指令执行。

127.0.0.1:6379> set mystr 'hello'
OK
127.0.0.1:6379> append mystr ' world'
(integer) 11
127.0.0.1:6379> get mystr
"hello world"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值