- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- import redis.clients.jedis.Jedis;
- /**
- *
- * @date 2013-04-01
- */
- public class RedisTest {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- // 字符串测试 //[key,value]=["wl_str","jedis test ..."]
- Jedis jedis = new Jedis("localhost");
- jedis.set("wl_str", "jedis test ...");
- String x = jedis.get("wl_str");
- System.out.println(x);
- // 列表 list 主要命令有两个LPUSH,RPUSH。L代表左,R代表右
- jedis.rpush("wl_list", "疑是地上霜");
- jedis.rpush("wl_list", "举头望明月");
- jedis.rpush("wl_list", "低头思故乡");
- jedis.lpush("wl_list", "床前明月光");
- List<String> values = jedis.lrange("wl_list", 0, -1); //LRANGE用来获取子列表。第一个元素的索引为0。-1,表示列表末尾,-2表示列表倒数第二个
- System.out.println(values);
- // 集合 Set(无序) SADD命令可以向集合添加一个新元素
- jedis.sadd("wl_set", "1");
- jedis.sadd("wl_set", "2");
- jedis.sadd("wl_set", "3");
- jedis.sadd("wl_set", "4");
- Set<String> setValues = jedis.smembers("wl_set"); //SMEMEBER命令获取集合里的元素
- System.out.println(setValues);
- // 有序集合 Sorted Set
- jedis.zadd("wl_sortedSet", 1940, "1940-购置房屋");
- jedis.zadd("wl_sortedSet", 1953, "1953-购置汽车");
- jedis.zadd("wl_sortedSet", 1965, "1965-发明专利");
- jedis.zadd("wl_sortedSet", 1916, "1916-上小学");
- jedis.zadd("wl_sortedSet", 1969, "1969-获得诺贝尔");
- jedis.zadd("wl_sortedSet", 1912, "1912-出生");
- Set<String> sortedSetValues = jedis.zrange("wl_sortedSet", 0, -1);//按照年份排序
- System.out.println("由年份从老到新排序");
- System.out.println(sortedSetValues);
- System.out.println("由年份从新到老排序");
- sortedSetValues=null;
- sortedSetValues=jedis.zrevrange("wl_sortedSet", 0, -1);
- System.out.println(sortedSetValues);
- //哈希表 Hash 主要用于批量修改和获取
- Map<String, String> pairs = new HashMap<String, String>();
- pairs.put("name", "克瑞斯");
- pairs.put("age", "20");
- pairs.put("sex", "男");
- jedis.hmset("young", pairs); //设置hash的值
- values = jedis.hmget("young", new String[] { "name", "age", "sex" });
- System.out.println(values);
- setValues = jedis.hkeys("young"); //获取young变量里面的标签 name、age和sex
- System.out.println(setValues);
- values = jedis.hvals("young"); //获取young变量里面的标签 name、age和sex所对应的值
- System.out.println(values);
- pairs = jedis.hgetAll("young"); //
- System.out.println(pairs);
- }
- }
输出结果如下:
jedis test ...
[床前明月光, 疑是地上霜, 举头望明月, 低头思故乡]
[3, 2, 1, 4]
由年份从老到新排序
[1912-出生, 1916-上小学, 1940-购置房屋, 1953-购置汽车, 1965-发明专利, 1969-获得诺贝尔]
由年份从新到老排序
[1969-获得诺贝尔, 1965-发明专利, 1953-购置汽车, 1940-购置房屋, 1916-上小学, 1912-出生]
[克瑞斯, 20, 男]
[sex, name, age]
[20, 克瑞斯, 男]
{sex=男, name=克瑞斯, age=20}
Redis 是一个数据结构类型的服务器,不是单纯的 key-value 存储。 Redis 里面的键是二进制安全的(二进制安全是指数据在传输过程中保证数据的安全性,包括加密等),因此键的内容不应该包含空格或者换行符。比如 ”hello world” 和 ”hello world\n” 是错误的。
一 Keys上的操作
1) DEL key [key...]
删除多个key,不存在的key,则忽略
返回实际删除了的key的个数
2) EXISTS key
返回1和0表示key是否存在
3) EXPIRE key seconds
设置key的存活时间
4) EXPIREAT key timestamp
UNIX timestamp(seconds since January 1, 1970)来设置存活期
5) KEYS pattern
返回match pattern的keys的列表
6) MOVE key db
在当前数据库中将key移动到指定的db中
如果key在当前db中不存在或者指定的db中已有这个key,就不移动
返回1或者0表示是否moved
7) OBJECT REFCOUNT <key>
返回关联到key上的引用的个数
OBJECT ENCODING <key>
返回key在数据库内部的压缩编码方式
OBJECT IDLETIME <key>
返回key多久没有被读写
在2.2.3版本后才可使用,目前装的是2.0.2版本,不支持
8) PERSIST key
移除key上的时间限制属性,使其永久存在
版本2.1.2后有效
9) RANDOMKEY
从数据库随机的返回一个key
10) RENAME key newkey
重新命名一个key,其他不变
11) RENAMENX key newkey
重新命名一个key,如果newkey已经存在时,命令失败
12)SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
各种排序方式
13) TTL key
返回一个key还能在数据库中存活多久(seconds)
如果key不存在或者没有时间限制,返回-1
expire mykey可以设置一个key的存活时间
14) TYPE key
返回key的类型(string,list,set...)
二 Strings
这是最简单的 redis 数据类型,在只使用这个数据类型的时候, Redis 就和一个有持久存储功能的 memcached 服务器类似。在 Redis 中,值最大可以有 1GB ,因此可以将图片等内容都缓存进去。 SET 操作, GET 操作是基本的存储和读取操作, INCR 命令可以将值自增 1.
1) APPEND key value
如果key不存在,创建一个新的key
如果key已经存在,在value后apend,改变了value的值
2) DECR key
key减1,对整型适用(或者以整型代表的字符串)
对其他类型,返回错误
3) DECRBY key decrement
将key减少指定的这么多
如果key不存在,从零开始减少
4) GET key
不解释
5) GETRANGE key start end
返回substring,包含开始和结束索引
0代表第一个索引,-1最后一个索引
6) GETSET key value
对已经存在的key,设置其新的value,并返回老的value
如果key不是string类型,返回错误
7) INCR key
增加,同上
8) INCRBY key increment
同上,不解释
9) MGET key [key ...]
返回多个值
10) MSET key value [key value ...]
同时设置多个key-value的值
11) MSETNX key value [key value ...]
当有一个key已经存在时,整条命令都不执行
12) SET key value
不解释
13) SETEX key seconds value
设置一个key并为它设置时间
等同于下列命令:
SET mykey value
EXPIRE mykey seconds
14) SETNX key value
SET if Not eXists,当key不存在时设置一个新的key
否则,什么也不做
15) SETRANGE key offset value
从已存在key的offeset索引处用value代替以前的值
版本2.1.8后有效
16) STRLEN key
不解释
三 Hashes
Redis 的 hash 是 string 类型的 field 和 value 映射表,添加删除的时间复杂度是 O(1) 。适合用来存储对象,可以减少内存的使用。减少内存使用的原因是新建 hash 对象时开始使用 zipmap 来存储。
1) HDEL key field [field ...]
删除hash表(key)中的多个域
对不存在的域忽略,返回实际删除的域的个数
2) HEXISTS key field
hash表(key)中是否存在域field
3) HGET key field
从hash表中得到域field的值
4) HGETALL key
返回hash表中的所有域和它对应的值
5) HINCRBY key field increment
将hash表中指定域增加一个值
6) HKEYS key
返回所有的域
7) HLEN key
返回hash表的长度
8) HMGET key field [field ...]
返回hash表多个域的值
9) HMSET key field value [field value ...]
同上
10) HSET key field value
设置一对值
11) HSETNX key field value
仅当域不存在时设置
12) HVALS key
返回所有的values
四 Lists
Redis 的 List 类型是使用双向链表存储的,因此不管是在 List 的头还是尾部插入数据,所消耗的时间的是固定的。
1) BLPOP key [key ...] timeout
Remove and get the first element in a list, or block until one is available
Lpop的blocking版本,在timeout时间时间内,pop第一个非空的key中的第一个元素(元素连同它所在的key一起返回)
可以允许key中有空值,它会去找第一个非空的key
如果都空,blocking发生作用,它会等待直到有一个key经过了lpush或rpush非空
2) BRPOP key [key ...] timeout
Remove and get the last element in a list, or block until one is available
最后一个。同上
3) BRPOPLPUSH source destination timeout
Pop a value from a list, push it to another list and return it; or block until one is available
4) LINDEX key index
用索引获取值(后进列表的索引在前)
5) LINSERT key BEFORE|AFTER pivot value
将value插入在pivot之前或者之后
6) LLEN key
不解释
7) LPOP key
pop并返回第一个值(索引0的值)
8) LPUSH key value [value ...]
不解释
9) LPUSHX key value
同上一条的区别是,只有当key已经存在并非空时,才push一个value
10) LRANGE key start stop
返回索引从start到stop的值
11) LREM key count value
删除|count|个value,count为正表示从左往右数,为负表示从右往左数
0表示删除全部值为value的项
返回值是实际删除的个数
12) LSET key index value
要设置的index范围必须已存在
13) LTRIM key start stop
trim一个list,保留start到stop之间的
14) RPOP key
pop最后一个key
15) RPOPLPUSH source destination
pop最后一个元素,append到另一个list里,并返回这个值
16) RPUSH key value [value ...]
加到列表最后
17) RPUSHX key value
仅当列表已经非空时,加到列表最后
五 Sets
Redis 的 SETs 是没有排序的二进制字符串集,换种说法就是字符串的无序集合。因为它是通过哈希表来实现的,因此它的添加,删除,查找的时间复杂度都是 O ( 1 )。 Set 除了基本的添加删除操作之外,还存在集合的取并集,交集,差集。通过这些操作可以轻松实现 SNS 和 BLOG 的好友推荐,标签等功能。
1) SADD key member
如果member已存在,命令失效. 注意是集合,元素不能重复
2) SCARD key
返回集合中元素的个数
3) SDIFF key [key ...]
差集,在第一个集合中存在,但在其他集合中都不存在的元素
4) SDIFFSTORE destination key [key ...]
同上,只是将返回的集合存在集合 destination中
5) SINTER key [key ...]
交集
6) SINTERSTORE destination key [key ...]
同上
7) SISMEMBER key member
是否属于一个集合
8) SMEMBERS key
返回集合所有元素
9) SMOVE source destination member
从一个set里将元素移动到另一个set里
10) SPOP key
pop一个随进的元素,因为集合是无序的
11) SRANDMEMBER key
返回一个随机的元素
12) SREM key member [member ...]
移除一个或多个元素
不在的元素忽略
13) SUNION key [key ...]
并集
14) SUNIONSTORE destination key [key ...]
同上
六 Sorted Sets
和 set 一样是字符串的集合,不同的是每个元素都会关联一个 double 类型的 score 。实现使用的是 skip list 和 hash table , skip list 的实现使用的是双线链表。 Score 的主要作用是排序,因此 sorted set 主要用作索引。
1) ZADD key score member [score] [member]
增加一个或多个元素,如果该元素已经存在,更新它的socre值
虽然有序集合有序,但它也是集合,不能重复元素,添加重复元素只会
更新原有元素的score值
2) ZCARD key
元素个数
3) ZCOUNT key min max
SCORE值在min和max之间的元素的个数
4) ZINCRBY key increment member
给有序集合key里面的元素member增加increment
若key不存在,创建一个key
若member不存在,创建一个member,从0开始增加
仅当key存在但类型不是有序集合时,出错
5) ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
nubberkeys指定要求交集的集合的个数
将nubberkeys个集合求交集,结果放在集合destination中
(如果des已存在,覆盖它)
参数[WEIGHTS weight [weight ...]]
指定求交集集合的权重,在计算新的score时使用
参数[AGGREGATE SUM|MIN|MAX]
当两个集合中有同一个名字的元素,但score不同时,指定取哪一个score
的元素
6) ZRANGE key start stop [WITHSCORES]
索引start到stop处的元素
7) ZRANGEBYSCORE key min max [WITHSCORES]
score在min到max之间的元素
8) ZRANK key member
返回menber的索引(score从低到高升序排列)
9) ZREM key member [member ...]
不解释
10) ZREMRANGEBYRANK key start stop
不解释
11) ZREMRANGEBYSCORE key min max
不解释
12) ZREVRANGE key start stop [WITHSCORES]
返回索引之间的元素
13) ZREVRANGEBYSCORE key max min [WITHSCORES]
同上,返回score区间内的
14) ZREVRANK key member
同8),score降序
15) ZSCORE key member
不解释
16) ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX ]
求并集,其他同5)求交集
基本KEY操作:
- exits key //测试指定key是否存在,返回1表示存在,0不存在
- del key1 key2 ....keyN //删除给定key,返回删除key的数目,0表示给定key都不存在
- type key //返回给定key的value类型。返回 none 表示不存在key,string字符类型,list 链表类型 set 无序集合类型...
- keys pattern //返回匹配指定模式的所有key,下面给个例子
- randomkey //返回从当前数据库中随机选择的一个key,如果当前数据库是空的,返回空串
- rename oldkey newkey //原子的重命名一个key,如果newkey存在,将会被覆盖,返回1表示成功,0失败。可能是oldkey不存在或者和newkey相同
- renamenx oldkey newkey //同上,但是如果newkey存在返回失败
- dbsize //返回当前数据库的key数量
- expire key seconds //为key指定过期时间,单位是秒。返回1成功,0表示key已经设置过过期时间或者不存在
- ttl key //返回设置过过期时间的key的剩余过期秒数 -1表示key不存在或者没有设置过过期时间
- select db-index //通过索引选择数据库,默认连接的数据库所有是0,默认数据库数是16个。返回1表示成功,0失败
- move key db-index //将key从当前数据库移动到指定数据库。返回1成功。0 如果key不存在,或者已经在指定数据库中
- flushdb //删除当前数据库中所有key,此方法不会失败。慎用
- flushall //删除所有数据库中的所有key,此方法不会失败。更加慎用
exits key //测试指定key是否存在,返回1表示存在,0不存在del key1 key2 ....keyN //删除给定key,返回删除key的数目,0表示给定key都不存在type key //返回给定key的value类型。返回 none 表示不存在key,string字符类型,list 链表类型 set 无序集合类型...keys pattern //返回匹配指定模式的所有key,下面给个例子randomkey //返回从当前数据库中随机选择的一个key,如果当前数据库是空的,返回空串rename oldkey newkey //原子的重命名一个key,如果newkey存在,将会被覆盖,返回1表示成功,0失败。可能是oldkey不存在或者和newkey相同renamenx oldkey newkey //同上,但是如果newkey存在返回失败dbsize //返回当前数据库的key数量expire key seconds //为key指定过期时间,单位是秒。返回1成功,0表示key已经设置过过期时间或者不存在ttl key //返回设置过过期时间的key的剩余过期秒数 -1表示key不存在或者没有设置过过期时间select db-index //通过索引选择数据库,默认连接的数据库所有是0,默认数据库数是16个。返回1表示成功,0失败move key db-index //将key从当前数据库移动到指定数据库。返回1成功。0 如果key不存在,或者已经在指定数据库中flushdb //删除当前数据库中所有key,此方法不会失败。慎用flushall //删除所有数据库中的所有key,此方法不会失败。更加慎用
String操作
- set key value //设置key对应的值为string类型的value,返回1表示成功,0失败
- setnx key value //同上,如果key已经存在,返回0 。nx 是not exist的意思
- get key //获取key对应的string值,如果key不存在返回nil
- getset key value //原子的设置key的值,并返回key的旧值。如果key不存在返回nil
- mget key1 key2 ... keyN //一次获取多个key的值,如果对应key不存在,则对应返回nil。下面是个实验,首先清空当前数据库,然后设置k1,k2.获取时k3对应返回nil
- mset key1 value1 ... keyN valueN //一次设置多个key的值,成功返回1表示所有的值都设置了,失败返回0表示没有任何值被设置
- msetnx key1 value1 ... keyN valueN //同上,但是不会覆盖已经存在的key
- incr key //对key的值做加加操作,并返回新的值。注意incr一个不是int的value会返回错误,incr一个不存在的key,则设置key为1
- decr key //同上,但是做的是减减操作,decr一个不存在key,则设置key为-1
- incrby key integer //同incr,加指定值 ,key不存在时候会设置key,并认为原来的value是 0
- decrby key integer //同decr,减指定值。decrby完全是为了可读性,我们完全可以通过incrby一个负值来实现同样效果,反之一样。
- append key value //给指定key的字符串值追加value,返回新字符串值的长度。下面给个例子
- substr key start end //返回截取过的key的字符串值,注意并不修改key的值。下标是从0开始的,接着上面例子
set key value //设置key对应的值为string类型的value,返回1表示成功,0失败setnx key value //同上,如果key已经存在,返回0 。nx 是not exist的意思get key //获取key对应的string值,如果key不存在返回nilgetset key value //原子的设置key的值,并返回key的旧值。如果key不存在返回nilmget key1 key2 ... keyN //一次获取多个key的值,如果对应key不存在,则对应返回nil。下面是个实验,首先清空当前数据库,然后设置k1,k2.获取时k3对应返回nilmset key1 value1 ... keyN valueN //一次设置多个key的值,成功返回1表示所有的值都设置了,失败返回0表示没有任何值被设置msetnx key1 value1 ... keyN valueN //同上,但是不会覆盖已经存在的keyincr key //对key的值做加加操作,并返回新的值。注意incr一个不是int的value会返回错误,incr一个不存在的key,则设置key为1decr key //同上,但是做的是减减操作,decr一个不存在key,则设置key为-1incrby key integer //同incr,加指定值 ,key不存在时候会设置key,并认为原来的value是 0decrby key integer //同decr,减指定值。decrby完全是为了可读性,我们完全可以通过incrby一个负值来实现同样效果,反之一样。append key value //给指定key的字符串值追加value,返回新字符串值的长度。下面给个例子substr key start end //返回截取过的key的字符串值,注意并不修改key的值。下标是从0开始的,接着上面例子
List操作
- 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不存在返回空列表
- ltrim key start end //截取list,保留指定区间内元素,成功返回1,key不存在返回错误
- lset key index value //设置list中指定下标的元素值,成功返回1,key或者下标不存在返回错误
- lrem key count value //从key对应list中删除count个和value相同的元素。count为0时候删除全部
- lpop key //从list的头部删除元素,并返回删除元素。如果key对应list不存在或者是空返回nil,如果key对应值不是list返回错误
- rpop //同上,但是从尾部删除
- blpop key1...keyN timeout // 从左到右扫描返回对第一个非空list进行lpop操作并返回,比如blpop list1 list2 list3 0 ,如果list不存在 list2,list3都是非空则对list2做lpop并返回从list2中删除的元素。如果所有的list都是空或不存在,则会阻塞timeout 秒,timeout为0表示一直阻塞。当阻塞时,如果有client对key1...keyN中的任意key进行push操作,则第一在这个key上被阻 塞的client会立即返回。如果超时发生,则返回nil。有点像unix的select或者poll
- brpop //同blpop,一个是从头部删除一个是从尾部删除
- rpoplpush srckey destkey //从srckey对应list的尾部移除元素并添加到destkey对应list的头部,最后返回被移除的元素值,整个操作是原子的.如果srckey是空或者不存在返回nil
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不存在返回空列表ltrim key start end //截取list,保留指定区间内元素,成功返回1,key不存在返回错误lset key index value //设置list中指定下标的元素值,成功返回1,key或者下标不存在返回错误lrem key count value //从key对应list中删除count个和value相同的元素。count为0时候删除全部lpop key //从list的头部删除元素,并返回删除元素。如果key对应list不存在或者是空返回nil,如果key对应值不是list返回错误rpop //同上,但是从尾部删除blpop key1...keyN timeout //从左到右扫描返回对第一个非空list进行lpop操作并返回,比如blpop list1 list2 list3 0 ,如果list不存在list2,list3都是非空则对list2做lpop并返回从list2中删除的元素。如果所有的list都是空或不存在,则会阻塞timeout秒,timeout为0表示一直阻塞。当阻塞时,如果有client对key1...keyN中的任意key进行push操作,则第一在这个key上被阻塞的client会立即返回。如果超时发生,则返回nil。有点像unix的select或者pollbrpop //同blpop,一个是从头部删除一个是从尾部删除rpoplpush srckey destkey //从srckey对应list的尾部移除元素并添加到destkey对应list的头部,最后返回被移除的元素值,整个操作是原子的.如果srckey是空或者不存在返回nil
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的所有元素,结果是无序的
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不存在返回nilsrandmember key //同spop,随机取set中的一个元素,但是不删除元素smove srckey dstkey member //从srckey对应set中移除member并添加到dstkey对应set中,整个操作是原子的。成功返回1,如果member在srckey中不存在返回0,如果key不是set类型返回错误scard key //返回set的元素个数,如果set是空或者key不存在返回0sismember 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的所有元素,结果是无序的
SortedSet操作
- zadd key score member //添加元素到集合,元素在集合中存在则更新对应score
- zrem key member //删除指定元素,1表示成功,如果元素不存在返回0
- zincrby key incr member //增加对应member的score值,然后移动元素并保持skip list保持有序。返回更新后的score值
- zrank key member //返回指定元素在集合中的排名(下标),集合中元素是按score从小到大排序的
- zrevrank key member //同上,但是集合中元素是按score从大到小排序
- zrange key start end //类似lrange操作从集合中去指定区间的元素。返回的是有序结果
- zrevrange key start end //同上,返回结果是按score逆序的
- zrangebyscore key min max //返回集合中score在给定区间的元素
- zcount key min max //返回集合中score在给定区间的数量
- zcard key //返回集合中元素个数
- zscore key element //返回给定元素对应的score
- zremrangebyrank key min max //删除集合中排名在给定区间的元素
- zremrangebyscore key min max //删除集合中score在给定区间的元素
zadd key score member //添加元素到集合,元素在集合中存在则更新对应scorezrem key member //删除指定元素,1表示成功,如果元素不存在返回0zincrby key incr member //增加对应member的score值,然后移动元素并保持skip list保持有序。返回更新后的score值zrank key member //返回指定元素在集合中的排名(下标),集合中元素是按score从小到大排序的zrevrank key member //同上,但是集合中元素是按score从大到小排序zrange key start end //类似lrange操作从集合中去指定区间的元素。返回的是有序结果zrevrange key start end //同上,返回结果是按score逆序的zrangebyscore key min max //返回集合中score在给定区间的元素zcount key min max //返回集合中score在给定区间的数量zcard key //返回集合中元素个数zscore key element //返回给定元素对应的scorezremrangebyrank key min max //删除集合中排名在给定区间的元素zremrangebyscore key min max //删除集合中score在给定区间的元素
Hash操作
- hset key field value //设置hash field为指定值,如果key不存在,则先创建
- hget key field //获取指定的hash field
- hmget key filed1....fieldN //获取全部指定的hash filed
- hmset key filed1 value1 ... filedN valueN //同时设置hash的多个field
- hincrby key field integer //将指定的hash filed 加上给定值
- hexists key field //测试指定field是否存在
- hdel key field //删除指定的hash field
- hlen key //返回指定hash的field数量
- hkeys key //返回hash的所有field
- hvals key //返回hash的所有value
- hgetall //返回hash的所有filed和value
转自:http://keshion.iteye.com/blog/1294851
redis.conf 配置问价
#是否作为守护进程运行
daemonize yes
#配置 pid 的存放路径及文件名,默认为当前路径下
pidfile redis.pid
#Redis 默认监听端口
port 6379
#客户端闲置多少秒后,断开连接
timeout 300
#日志显示级别
loglevel verbose
#指定日志输出的文件名,也可指定到标准输出端口
logfile stdout
#设置数据库的数量,默认连接的数据库是 0,可以通过 select N 来连接不同的数据库
databases 16
#保存数据到 disk 的策略
#当有一条 Keys 数据被改变是,900 秒刷新到 disk 一次
save 900 1
#当有 10 条 Keys 数据被改变时,300 秒刷新到 disk 一次
save 300 10
#当有 1w 条 keys 数据被改变时,60 秒刷新到 disk 一次
save 60 10000
#当 dump .rdb 数据库的时候是否压缩数据对象
rdbcompression yes
#dump 数据库的数据保存的文件名
dbfilename dump.rdb
#Redis 的工作目录
dir /home/falcon/redis-2.0.0/
########### Replication #####################
#Redis 的复制配置
# slaveof <masterip> <masterport>
# masterauth <master-password>
############## SECURITY ###########
# requirepass foobared
############### LIMITS ##############
#最大客户端连接数
# maxclients 128
#最大内存使用率
# maxmemory <bytes>
########## APPEND ONLY MODE #########
#是否开启日志功能
appendonly no
# 刷新日志到 disk 的规则
# appendfsync always
appendfsync everysec
# appendfsync no
################ VIRTUAL MEMORY ###########
#是否开启 VM 功能
vm-enabled no
# vm-enabled yes
vm-swap-file logs/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4
############# ADVANCED CONFIG ###############
glueoutputbuf yes
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
#是否重置 Hash 表
activerehashing yes
相关推荐
脆弱水印技术在图像篡改检测中的应用与挑战,脆弱水印技术在图像篡改检测中的应用与挑战,脆弱水印的图像篡改检测 ,脆弱水印; 图像篡改; 检测; 图像处理,基于脆弱水印的图像篡改检测技术
高效Delta机械臂运动控制卡:前瞻轨迹规划,G代码编程,多维插补,激光切割与绘图,机器视觉集成,扩展坐标与旋转功能,一键脱机运行,大容量存储,基于前瞻运动轨迹规划的Delta机械臂运动控制卡:高效G代码编程,圆弧插补与激光切割功能,配合机器视觉实现精准操作。高效精准操作与管理工具的创新型机械运动控制解决方案。,delta机械臂,delta机器人,运动控制器,运动控制卡 本卡采用前瞻运动轨迹规划,运动采用G代码指令编程,具有G5三维空间的圆弧插补,空间直线插补功能,子程序编程功能,逻辑判断语句功能,示教编程功能(支持手柄),变量位置编程功能,动态PWM激光输出功能(兼容舵机控制信号),动态频率脉冲输出功能,通用输入输出功能。 可极简单的实现绘图雕刻,3维激光切割功能。 轨迹图形可xy平面整体旋转功能。 可利用变量位置,获取外部坐标要求,可轻松配合机器视觉。 支持探针功能,测平面,测外形等。 可设置4组平移工件坐标系,2组参考原点。 新增2组空间旋转工件坐标系,支持任意图形直接空间旋转。 卡上一键脱机RAM区运行功能。 2M程序容量。 断电后位置记忆,变量坐标位置记忆,计数器记忆。 伺服
毕业设计
内容概要:随着模型参数量不断扩大,如从BERT到GPT-3,传统微调方法变得不可行。文章聚焦于参数高效微调(PEFT)策略,系统探讨了几十余种方法,包括加法型、选择型、重构型及其混合方法。文中详细介绍各类PEFT的具体操作(如引入额外参数、冻结部分权重等),并通过广泛实验验证其在大型预训练模型上的适用性和性能。特别指出,PEFT在保持高性能的同时极大减少了计算与内存成本,并针对十几亿乃至几十亿参数级别的模型展开测试与讨论。 适用人群:适用于从事大规模机器学习模型研究、开发的应用科学家和技术专家,尤其是那些希望通过减少资源消耗实现高效微调的技术团队成员。 使用场景及目标:该文章适用于希望在有限资源条件下优化大模型性能的人群。帮助研究人员理解不同类型PEFT的优点和局限,为实际项目中选择合适技术路线提供建议。其目的是为了指导开发者正确理解和应用先进的PEFT技术,从而提高系统的运行效率和服务质量。 其他说明:本文不仅提供了详尽的方法介绍和性能对比,而且为未来的研究指明方向,鼓励创新思维的发展,旨在推动参数有效调优领域的进步。同时提醒注意现有的挑战和未解决问题。
磷酸铁锂体系电池COMSOL模型构建解析与实践指南,磷酸铁锂体系电池COMSOL建模分析与优化方案探讨,出一个磷酸铁锂体系电池comsol模型 ,建立磷酸铁锂体系电池; comsol模型; 电池模拟; 模型构建; 锂离子电池。,构建磷酸铁锂体系电池Comsol模型,深入探索电池性能
开关磁阻电机多维控制策略仿真研究(基于Matlab 2016b的精细化模型),开关磁阻电机多策略控制仿真模型(matlab 2016b版本,含传统与智能控制策略及离线迭代算法),开关磁阻电机控制仿真(matlab 2016b版本仿真模型 自用) 模型包涵: 开关磁阻电机传统控制:电流斩波控制、电压PWM控制、角度位置控制。 智能控制:12 8三相开关磁阻电机有限元分析本体建模、转矩分配函数控制、模糊PID控制、模糊角度控制、神经网络在线自适应迭代控制。 部分离线迭代算法:遗传算法优化PID、粒子群算法优化PID。 biye研究生自用仿真模型 . ,核心关键词: 开关磁阻电机; 控制仿真; Matlab 2016b; 传统控制; 智能控制; 有限元分析; 转矩分配函数控制; 模糊PID控制; 神经网络在线自适应迭代控制; 遗传算法优化PID; 粒子群算法优化PID; 研究生自用仿真模型。,基于Matlab 2016b的开关磁阻电机控制模型研究与仿真优化研究生自用版
McgsPro_IoT驱动_V3.1.1.8
数学建模相关主题资源2
基于改进粒子群算法的光伏储能选址定容模型分析——针对14节点配网系统的实践与出力情况探索,基于改进粒子群算法的光伏储能选址定容模型分析与出力预测研究(含配图材料参考),含光伏的储能选址定容模型 14节点 程序采用改进粒子群算法,对分析14节点配网系统中的储能选址定容方案,并得到储能的出力情况,有相关参考资料 ,核心关键词:含光伏的储能选址定容模型;14节点;改进粒子群算法;配网系统;储能选址定容方案;出力情况;参考资料。,基于改进粒子群算法的14节点配网光伏储能选址定容模型及出力分析研究
基于需求响应与阶梯式碳交易的综合能源系统优化调度模型研究(MATLAB仿真实现),基于需求响应与碳交易的综合能源系统优化调度策略:灵活调配冷热电负荷,实现低碳高效运行。,考虑需求响应和碳交易的综合能源系统日前优化调度模型 关键词:柔性负荷 需求响应 综合能源系统 参考:私我 仿真平台:MATLAB yalmip+cplex 主要内容:在冷热电综合能源系统的基础上,创新性的对用户侧资源进行了细致的划分和研究,首先按照能源类型将其分为热负荷需求响应和电负荷需求响应,在此基础上,进一步分为可削减负荷、可转移负荷以及可平移负荷三类,并将柔性负荷作为需求响应资源加入到综合能源的调度系统中,从而依据市场电价灵活调整各类负荷,实现削峰填谷,改善负荷曲线等优势,此外,为了丰富内容,还考虑了阶梯式碳交易,构建了考虑阶梯式碳交易以及综合需求响应的综合能源低碳经济调度模型,设置了多个对比场景,验证所提模型的有效性,从而体现工作量,是不可多得的代码 场景一: 这段程序主要是用来进行某微网的运行优化。它包含了多个功能和应用,涉及到了能源集线器、需求侧柔性负荷、光伏、风机、燃气轮机等内容。 首先,程序读取了
multisim
内容概要:本文详细介绍了一系列用于科学研究、工程项目和技术开发中至关重要的实验程序编写与文档报告撰写的资源和工具。从代码托管平台(GitHub/GitLab/Kaggle/CodeOcean)到云端计算环境(Colab),以及多种类型的编辑器(LaTeX/Microsoft Word/Overleaf/Typora),还有涵盖整个研究周期的各种辅助工具:如可视化工具(Tableau)、数据分析平台(R/Pandas)、项目管理工具(Trello/Jira)、数据管理和伦理审核支持(Figshare/IRB等),最后提供了典型报告的具体结构指导及其范本实例链接(arXiv/PubMed)。这为实验流程中的各个环节提供了系统的解决方案,极大地提高了工作的效率。 适合人群:高校学生、科研工作者、工程技术人员以及从事学术写作的人员,无论是新手入门还是有一定经验的人士都能从中受益。 使用场景及目标:帮助读者高效地准备并开展实验研究活动;促进团队间协作交流;规范研究报告的形式;提高对所收集资料的安全性和隐私保护意识;确保遵循国际公认的伦理准则进行实验。
基于OpenCV与深度学习的人脸表情识别系统:Python编程,实时检测与视频加载的PyQt界面应用,基于OpenCV与深度学习的人脸表情识别系统:Python编程,PyQt界面,实时视频与图片检测.exe可执行文件,基于OpenCV的人脸表情识别系统 相关技术:python,opencv,pyqt,深度学习 (请自行安装向日葵远程软件,以便提供远程帮助) 可编译为.exe文件。 软件说明:摄像头实时检测,加载照片,视频均可。 有基础的同学,可自行修改完善。 第一张和第二张为运行截图。 ,人脸表情识别; Op
基于双端口直流微电网系统模型的改进下垂控制及稳定性分析(含电压鲁棒控制器与粒子群寻优权函数),基于双端口直流微电网系统模型的优化设计与分析:改进下垂控制、电压鲁棒控制器及仿真研究,直流微网,直流微电网系统模型,有两个端口。 外环有改进下垂控制,内环双pi环,带恒功率负载。 暂态性能良好,可用于控制器设计,稳定性分析等。 另外还有电压鲁棒控制器,小信号模型,根轨迹分析,粒子群寻优权函数等内容。 仅为simulink ,直流微网; 直流微电网系统模型; 改进下垂控制; 双pi环; 恒功率负载; 暂态性能; 控制器设计; 稳定性分析; 电压鲁棒控制器; 小信号模型; 根轨迹分析; 粒子群寻优权函数,基于改进下垂控制的直流微网系统模型:双PI环与恒功率负载研究
这是萨达萨达是发生发士大夫
Labview下的通用OCR识别技术:高效文本识别与图像处理解决方案,Labview下的通用OCR识别技术:提高文字识别效率与准确度,labview.通用OCR识别技术 ,核心关键词:LabVIEW; 通用OCR识别技术; 识别技术; OCR技术; 图像识别; 文字识别。,LabVIEW平台下的通用OCR识别技术
一个任务待办记录、提醒工具 可设定提前N天开始提醒 数据本地存储
实现电流注入型牛拉法及多种潮流计算程序:牛拉法、前推回代法与三相潮流算法集萃,潮流计算程序集锦:涵盖电流注入型牛拉法、牛拉法、前推回代法及三相潮流算法实现,本程序采用matlab编写,主要是实现电流注入型牛拉法 除此之外,本人还编写了很多种关于潮流计算的程序,主要有牛拉法,前推回代法,以还有相和三相潮流计算程序 ,matlab编写;电流注入型牛拉法;潮流计算程序;牛拉法;前推回代法;相和三相潮流计算,Matlab实现:电流注入型牛拉法与多态潮流计算程序集