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
- redis数据类型(三)
- redis数据类型(三)
- 三,redis数据类型-List
- redis 三(数据类型)
- Redis(三):数据类型
- Redis教程(三):List数据类型
- Redis系列~数据类型(三)
- Redis学习三(数据类型)
- (三)redis常用数据类型 Hashes
- Redis存储数据类型三:Set
- Redis笔记(三)Redis的数据类型
- try redis (三) - 数据类型和抽象
- Redis学习笔记三、List数据类型
- redis数据类型(三)散列类型
- Redis源码解析(三):redis之数据类型String
- redis教程(三):Redis数据类型及基本的使用
- Redis数据类型之散列类型--Redis系列三
- 跟我学REDIS-REDIS(三)----常用数据类型之Hash
- Watson Explorer 入门(12):词典
- 创建函数计算目标元素到浏览器窗口的距离
- 平方数
- js输出当前系统时间
- Note4、const
- redis 三(数据类型)
- SSM项目---淘淘商城(IDEA开发)
- POJ 2387 Til the Cows Come Home 最短路 Dijstra
- Java内存模型
- [leetcode: Python]290.Word Pattern
- linux shell
- 关于tomcat发布项目404的奇葩问题
- BZOJ3173 [Tjoi2013]最长上升子序列
- 玲珑杯-No Game No Life