Chinaunix首页 | 论坛 | 博客
  • 博客访问: 404904
  • 博文数量: 105
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 889
  • 用 户 组: 普通用户
  • 注册时间: 2016-01-23 21:45
个人简介

目前在一家电信公司就职报表开发工程师,2010年开始从事运维方面的工作,期间从事过业务维护工程师、自动化运维工程师,2016年转为报表开发工程师。有耐心,抗压力、爱折腾,喜欢研究自动化工具。

文章分类

全部博文(105)

分类: 系统运维

2016-07-18 10:51:17

介绍下redis支持的各种数据类型包括string,list ,set ,sorted set 和hash
1. keys
redis本质上一个key-value db,所以我们首先来看看他的key.首先key也是字符串类型。
del key1 key2 ....keyN  删除给定key,返回删除key的数目.
127.0.0.1:6379> set 3 3333
OK
127.0.0.1:6379> del  1 2 3
(integer) 3
127.0.0.1:6379> 
0表示给定key都不存在.
127.0.0.1:6379> del sss
(integer) 0

type key 返回给定key的value类型。返回 none 表示不存在key,string字符类型,list 链表类型 set 无序集合类型...
127.0.0.1:6379> set xiajing  xia
OK
127.0.0.1:6379> type  xiajing
string

keys pattern 返回匹配指定模式的所有key,下面给个例子
127.0.0.1:6379> keys *
1) "jing"
2) "xj"
3) "xia

randomkey 返回从当前数据库中随机选择的一个key,如果当前数据库是空的,返回空串
127.0.0.1:6379> randomkey
"xia"

rename oldkey newkey 原子的重命名一个key,如果newkey存在,将会被覆盖,返回1表示成功,0失败。可能是oldkey不存在或者和newkey相同
renamenx oldkey newkey 同上,但是如果newkey存在返回失败
127.0.0.1:6379> rename xiajing xj
OK
127.0.0.1:6379> get xj
"xia"
127.0.0.1:6379> get  xiajing
(nil)

dbsize 返回当前数据库的key数量
[root@VM_114_9_centos bin]# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> dbsize
(integer) 3
127.0.0.1:6379>

expire key seconds 为key指定过期时间,单位是秒。返回1成功,0表示key已经设置过过期时间或者不存在
ttl key 返回设置过过期时间的key的剩余过期秒数 -1表示key不存在或者没有设置过过期时间
127.0.0.1:6379> set  wo  women
OK
127.0.0.1:6379> expire wo 30
(integer) 1
127.0.0.1:6379> ttl wo
(integer) 24
127.0.0.1:6379> ttl wo
(integer) 18

select db-index 通过索引选择数据库,默认连接的数据库所有是0,默认数据库数是16个。返回1表示成功,0失败
move key db-index  将key从当前数据库移动到指定数据库。返回1成功。0 如果key不存在,或者已经在指定数据库中
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get  xia
(nil)
127.0.0.1:6379[1]> get  jing
(nil)
127.0.0.1:6379[1]> set  hh  wo
OK
127.0.0.1:6379[1]> get  hh
"wo"
127.0.0.1:6379[1]> move hh 0
(integer) 1
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> get hh
"wo"

flushdb 删除当前数据库中所有key,此方法不会失败。慎用
flushall 删除所有数据库中的所有key,此方法不会失败。更加慎用。
2、string类型
string类型,redis就可以被看作加上持久化特性的memcached.当然redis对string类型的操作比memcached多很多啊。如下:
set key value 设置或者修改key对应的值为string类型的value,返回1表示成功,0失败
127.0.0.1:6379[1]> set  wg  123
OK

setnx key value 同上,如果key已经存在,返回0 。nx 是not exist的意思
get key 获取key对应的string值,如果key不存在返回nil
127.0.0.1:6379> get wg
(nil)
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get wg
"123"

getset key value 原子的设置key的值,并返回key的旧值。如果key不存在返回nil
127.0.0.1:6379[1]> getset wg bbb
"123"

mget key1 key2 ... keyN 一次获取多个key的值,如果对应key不存在,则对应返回nil。下面是个实验,然后设置k1,k2.获取时k3对应返回nil
127.0.0.1:6379[2]> mget k1 k2 k3
1) "k"
2) "kk"
3) (nil)
3、list操作
redis的list类型其实就是一个每个子元素都是string类型的双向链表。
lpush key string 在key对应list的头部添加字符串元素,返回1表示成功,0表示key存在且不是list类型
rpush key string 同上,在尾部添加
llen key 返回key对应list的长度,key不存在返回0,如果key对应类型不是list返回错误
lrange key start end 返回指定区间内的元素,下标从0开始,负值表示从后面计算,-1表示倒数第一个元素 ,key不存在返回空列表
lpop key 从list的头部删除元素,并返回删除元素。如果key对应list不存在或者是空返回nil,如果key对应值不是list返回错误
rpop 同上,但是从尾部删除
lindex 返回下标对应的值
> del tick  --删除
(integer) 1
> rpush tick xia  
(integer) 1
> rpush tick jing
(integer) 2
> lrange tick 0 -1  ---取出
1) "xia"
2) "jing"
> rpop tick
"jing"
> lindex tick 0
"xia"
4、set
redis的set是string类型的无序集合。下面详细介绍set相关命令
sadd key member 添加一个string元素到,key对应的set集合中,成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误
srem key member 从key对应set中移除给定元素,成功返回1,如果member在集合中不存在或者key不存在返回0,如果key对应的不是set类型的值返回错误
spop key 删除并返回key对应set中随机的一个元素,如果set是空或者key不存在返回nil
srandmember key 同spop,随机取set中的一个元素,但是不删除元素
smove srckey dstkey member 从srckey对应set中移除member并添加到dstkey对应set中,整个操作是原子的。成功返回1,如果member在srckey中不存在返回0,如果
key不是set类型返回错误
scard key 返回set的元素个数,如果set是空或者key不存在返回0
sismember key member 判断member是否在set中,存在返回1,0表示不存在或者key不存在
sinter key1 key2...keyN 返回所有给定key的交集
sinterstore dstkey key1...keyN 同sinter,但是会同时将交集存到dstkey下
sunion key1 key2...keyN 返回所有给定key的并集
sunionstore dstkey key1...keyN 同sunion,并同时保存并集到dstkey下
sdiff key1 key2...keyN 返回所有给定key的差集
sdiffstore dstkey key1...keyN 同sdiff,并同时保存差集到dstkey下
smembers key 返回key对应set的所有元素,结果是无序的

阅读(1665) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~