redis 三(数据类型)

来源:互联网 发布:项目 书籍 商务 知乎 编辑:程序博客网 时间:2024/06/06 12:28
redis 数据类型
string:是最简单的类型,一个key对应一value,string 类型是二进制安全的,redis的string可以包含任何数据

启动:redis-server文件
          命令:redis-server /usr/local/redis/etc/redis.conf 

启动客户端:redis-cli文件
          命令:redis-cli

查看端口进程:netstat -tunp | grep 6379

[root@instance-08u64kco bin]#./redis-cli

set数据类型:
127.0.0.1:6379> set a aaa
OK
127.0.0.1:6379> get a
"aaa"
127.0.0.1:6379> set a 1234567
OK
127.0.0.1:6379> get a
"1234567"


两次设置a,变量改变。
Setnx:如果key存在返回0,如果不存在返回1。
127.0.0.1:6379> setnx a 6543
(integer) 0
127.0.0.1:6379> get a
"1234567"

setex :设置值的有效期
127.0.0.1:6379> setex b 10 red  //设置b的有效时间为10s

setrange: setrange  email 6 lampbre.com#替换键的值从第6个字符开始换为lampbre.com

mset:一次设置多个key的值
127.0.0.1:6379> mset q 1 w 2  //key:q 值为1,key-w 职位2
OK
127.0.0.1:6379> get q
"1"
127.0.0.1:6379> get w
"2"
msetnx:批量设置
  msetnxname1 张三 name3 李四 #判断键是否存在,不存在则设置,否则不设置返回0

get:获取值
getset:设置key,返回key的旧值

getrange:取一个字符的子字符值
127.0.0.1:6379> set d 123456789
OK
127.0.0.1:6379> getrange d 0 4
"12345"
mget:批量获取

incr: 每次递增一,incr 变量名
incrby :按指定的数增加,如果key不存在会设置key. incrby 变量名  增值,
decr:对key自减
decrby :对key指定减,
append 给指定的字符串追加value,返回新的字符串值的长度
strlen;查看key值的长度


hashes数据类型:
hash是一个string类型的field和value的映射表。他的添加和删除操作都是0/1平均的,hash特别适用于存储对象,相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。

hset :设置hash field为指定值,如果key不存在,则先创建
127.0.0.1:6379> hset user:001 name wym   //user表的001编号 name字段的值为wym
(integer) 1

hget:取hash的值,
127.0.0.1:6379> hget user:001 name
"wym"

hsetnx:设置hash field为指定值,如果key不存在就先创建,返回1。如果存在返回0

hmset:同时设置多个field.
hmget:获取多个field
hincrby:自增
hexits:field是否存在
hlen:返回指定hash的field的数量
hdel :删除指定hash的field
hkeys:返回hash的所有field
hvals:返回hash的所有value
hgetall:获取某个hash中的所有field和value

list数据类型(既可以作为栈也可以作为队列)
list是一个链表结构,主要功能使push,pop,获取一个范围的所有值等等,操作中key理解为链表的名字。redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过 push,pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列

栈(烧杯):先进后出
队列(通道):先进先出



lpush:在key从头部添加一个字符串元素,返回list中的元素个数。(栈的体现

127.0.0.1:6379> lpush mylist 'hello'
(integer) 1
127.0.0.1:6379> lpush mylist 'world'
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1
1) "world"
2) "hello"
先进后出


rpush: 在key从尾添加一个字符串元素。(队列的体现
127.0.0.1:6379> rpush list2 'hello'
(integer) 1
127.0.0.1:6379> rpush list2 'world'
(integer) 2
127.0.0.1:6379> lrange list2 0 -1
1) "hello"
2) "world"
先进先出

linsert:在key对应list的特定位置添加字符串

127.0.0.1:6379> lpush lis3 'one'
(integer) 1
127.0.0.1:6379> lpush lis3 'two'
(integer) 2
127.0.0.1:6379> lrange 0 -1
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379> lrange lis3 0 -1
1) "two"
2) "one"
127.0.0.1:6379> linsert lis3 before one 'three'
(integer) 3
127.0.0.1:6379> lrange lis 0 -1
(empty list or set)
127.0.0.1:6379> lrange lis3 0 -1
1) "two"
2) "three"
3) "one"

lset:设置list中指定下标的元素值。
127.0.0.1:6379> lset lis3 0 'aaa'
OK
127.0.0.1:6379> lrange lis3 0 -1
1) "aaa"
2) "three"
3) "one"

lrem:从key对应list中删除n和value相同的值。从头部开始删除(n<0从尾部删除,n=0全部删除)
127.0.0.1:6379> lrange list5 0 -1
1) "one"
2) "one"
3) "one"
4) "twe"
5) "one"
6) "one"
127.0.0.1:6379> lrem list5 -1 one
(integer) 1
127.0.0.1:6379> lrange list5 0 -1
1) "one"
2) "one"
3) "one"
4) "twe"
5) "one"
127.0.0.1:6379> lrem list5 0 one
(integer) 4
127.0.0.1:6379> lrange list5 0 -1
1) "twe"

ltrim:保留指定key的值范围内的数据。
127.0.0.1:6379> lrange list6 0 -1
1) "four"
2) "there"
3) "two"
4) "one"
127.0.0.1:6379> ltrim list6  1 -1
OK
127.0.0.1:6379> lrange list6 0 -1
1) "there"
2) "two"
3) "one"

lpop:从list头部删除一个元素,并返回删除元素

rpop:从list尾部删除一个元素,并返回删除元素
127.0.0.1:6379> lrange list6 0 -1
1) "there"
2) "two"
3) "one"
4) "zore"
127.0.0.1:6379> lpop list6
"there"
127.0.0.1:6379> lrange list6 0 -1
1) "two"
2) "one"
3) "zore"
127.0.0.1:6379> rpop list6
"zore"
127.0.0.1:6379> lrange list6 0 -1
1) "two"
2) "one"

rpoplpush:包一个list的最后一个值,添加到另一个list的头部
127.0.0.1:6379> lrange list5 0 -1
1) "twe"
127.0.0.1:6379> lrange list6 0 -1
1) "two"
2) "one"
127.0.0.1:6379> rpoplpush list6 list5     //从list6尾部弹出一个,push到list5 的头部
"one"
127.0.0.1:6379> lrange list5 0 -1
1) "one"
2) "twe"
127.0.0.1:6379> lrange list6  0 -1
1) "two"

lindex:返回名称为key的list中index位置的元素。
127.0.0.1:6379> lindex list5 0
"one"
127.0.0.1:6379> lindex list5 1
"twe"
127.0.0.1:6379> lrange list5 0 -1
1) "one"
2) "twe"
127.0.0.1:6379> lindex list5 3
(nil)   // 代表空的值
 
llen: 返回list的知道个数。

sets 类型(集合)
Set是集合,他是stringl类型的无序集合,set是通过hash table实现的,删除,添加和查找的复杂度都是0(1)。对集合我们可以取并集(和),交集(共同),差集(差)。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能

sadd :向名称key的set中添加元素,不允许有相同的元素
127.0.0.1:6379> sadd myset1 one
(integer) 1
127.0.0.1:6379> sadd myset1 two
(integer) 1
127.0.0.1:6379> sadd myset1 two
(integer) 0
127.0.0.1:6379> smembers myset1
1) "one"
2) "two"
smembers:查看集合成员

srem:删除某成员

srem 集合名 成员值

spop:随机删除返回并删除名称为key的set中的元素

sdiff:返回所有给定key与第一个key的差集
sdiff myset1 myset2 : 以myset1为 标准与myset2不同的元素

sdiffstore :  返回所有给定的key与第一个key的差集,并将结果存为另一个key
sdiffstore myset3 myset1 myset2 : 以myset1位标准,与myset2比较,返回的值赋值给myset3

sinter : 返回所有给定集合的交集
sinterstore :返回所有给定key的交集,并将结果存为另一个key
sinterstore myset5 myset2 myset1 : myset1和myset2的相同元素存进myset5

sunion: 返回所有给定集合的并集

sunionstore : 返回所有给定key的并集
sunionstore myset7 myset1 myset2 : myset1和myset2的所有元素存进myset7

smove:从第一个key对应的set中移除member(成员)并添加到第二个对应的set中
smove myset1 myset7 two : 从myset1中移除成员two并添加到myset7中

sismember:判断元素是否为集合中的元素,member是否是名称为key的set的元素,返回0(1)
sismember myset1 one:: one 元素是否存在于myset1中

srandmember: 随机返回名称为key的set的一个元素,但不删除元素。
srandmember myset1

sorted sets (有序集合):sorted set 是set的升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列的mysql表,一列存value,一列存顺序,



zadd : 向名称为key的zset的元素中添加值,有两个参数
zadd myzset1 1 'one'

zrange :取有序集合的值,0,-1 :表示索引,withscores:查看顺序号,
127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "1"
3) "one1"
4) "1"
127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one1"
2) "1"
3) "onww"
4) "1"
5) "one"
6) "2"
127.0.0.1:6379> zadd myzset1 3 one
(integer) 0
127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one1"
2) "1"
3) "onww"
4) "1"
5) "one"
6) "3"
结论: 1、有序集合一个order可以对应多个值

             2、有序集合的值是不重复的,例如order2的值是two。,现 在设置order3的是为two,结果序列order3的值是two.替代了order2     的值和序列,即order2不存在。

zrem:删除名称为key的zset中的元素。
zrem myzsert1 one。

zincrby: 对顺序号进行增加,如果添加的元素存在着增加序列的值,如果不存在着新该元素。
zincrby myzset1 N one : 在myzset1这个有序集合中对one对应的序列进行增加N。

zrank : 返回元素的索引。按照withscores排序(从小到大)。
127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one1"
2) "1"
3) "onww"
4) "1"
5) "one"
6) "6"
127.0.0.1:6379> zrank myzset1 one
(integer) 2
xsd
zrevrank:先按score降序,再取索引。返回名称为key的zset中的member元素的排名。(按score从大到小排序)即下标。
127.0.0.1:6379> zrange myset2 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
127.0.0.1:6379> zrevrank myset2 three
(integer) 0
127.0.0.1:6379> zrevrank myset2 one
(integer) 2

zrevrange : 按score降序取值
127.0.0.1:6379> zrevrange myset2 0 -1 withscores
1) "three"
2) "3"
3) "two"
4) "2"
5) "one"
6) "1"


zrangebyscore : 返回集合在给定区间的值
zrangebyscore myzset2 2 3  withscores 

zcount : 返回集合中score在给定区间的数量
zcount myzset2 2 3 

zcard : 返回集合中所有元素个数
zcard myzset2 

zremrangebyrank:  删除指定索引范围内的元素,返回删除个数
zremrangebyrank myzset2 1 1 //删除索引1的元素

zremrangebyscore: 删除在指定顺序内的元素
zremrangbyscore myzset2 2 5 //删除顺序在2-5的元素


0 0
原创粉丝点击