redis学习笔记二(常规操作)

0.安装redis 

tar -zxvf redis-3.2.1.tar.gz 解压
mv redis-3.2.1 redis
mv redis /usr/local
cd /usr/local/redis
make
#可使用root用户执行`make install`,将可执行文件拷贝到/usr/local/bin目录下。这样就可以直接敲名字运行程序了。

make install



1.启动redis
redis-server  配置文件地址
查询是否启动
ps -ef|grep redis
客户端链接redis
redis-cli -p 6379


2.选择数据库(默认16个数据库)
select 3   表示选择第4个数据库
set k1 33  设置k1的值为33到数据库,如果已经有k1就覆盖
get k1     返回数据
DBSIZE     查看当前库key数目
keys *     列出当前库所有key
keys k?    可以通配符
FLUSHALL   清除所有数据库的key

FLUSHDB    删除当前数据库数据


3.redis的5大结构:string map list set sortset
exists key 判断key是否存在
move k3 2把k3移到3号库
ttl k1 返回k1的有效时间,-1表示永远不过期
expire k3 10 有效时间10秒,过期get返回null
del k3 删除k3
type k1 返回key类型
lpush mylist 1 2 3 4 5 输入一个list
lrange mylist 0 -1 堆模式返回所有数据


4:string方法
append k1 123 后面叠加
strlen k1 返回长度

(以下4个只能用于数字)
incr k1 递增
incrby k1 3 每次3的速度递增
decr k1递减
decrby k1 2 每次2的速度递减


getrange k1 0 -1 返回所有字符串
getrange k1 2 5 返回2到5的字符串
setrange k1 0 xxx 第0位开始覆盖3个原始数值

setex k1 10 zhi 设置存活时间为10秒,值为zhi
setnx k1 如果不存在设置k1

mset k1 2 k2 4 k3 s 批量设置
mget k1 k2 k3 批量获取
msetnx k1 5 k8 5 批量修改,但是如果有一个没有则都不成功


代码常用:

 
 
Map<String,String> maps = new HashMap<String, String>(); maps.put("multi1","multi1"); maps.put("multi2","multi2"); maps.put("multi3","multi3"); template.opsForValue().multiSet(maps); List<String> keys = new ArrayList<String>(); keys.add("multi1"); keys.add("multi2"); keys.add("multi3"); System.out.println(template.opsForValue().multiGet(keys));



5.list方法
lpush list01  1 2 3 4 左边开始插入一个list
rpush list01  1 2 3 4 右边插入一个list

linsert list01 before xx java 列表的xx值位置处之前插入java

linsert list01 after xx oracle 列表的xx值位置处之后插入oracle

lpop list01 出栈顶一个
rpop list01 出栈底一个

lrem list01 2 3  删除列表中有值为3的前2个

rpoplpush list01 list02 把第一个列表的最先进的数据取出放在第二列表

ltrim list01 2 4 把列表中2到4的数据取出在赋给自己

lset list01 3 5 在列表中第3个位置修改值为5
lindex list01 3 返回角标第3个元素
llen list01 返回长度
lrang list01  0 -1  返回先进后出数据

常用代码:

 
 
String[] stringarrays = new String[]{"1","2","3"}; template.opsForList().leftPushAll("listarray",stringarrays); System.out.println(template.opsForList().range("listarray",0,-1));
 
  
List<Object> strings = new ArrayList<Object>(); strings.add("1"); strings.add("2"); strings.add("3"); template.opsForList().leftPushAll("listcollection4", strings);


6.set方法

sadd s1 1 1 2 2 3 3 把数据写入set集合由于不能重复所有写入的其实只有1  2 3

smembers s1 返回所有数据

sismember s1 1 判断1是否是成员

scard s1 返回元素个数

srem s1 2 删除集合中2元素

srandmember s1 3 在集合中随机返回3个元素

spop s1 随机出栈一个元素

smove s1 s2 3 把s1中的3移动到s2中

sdiff  s1 s2 实现差集

sinter s1 s2实现交际

sunion s1 s2实并集

常用方法:

String[] strarrays = new String[]{"strarr1","sgtarr2"};
template.opsForSet().add("setTest", strarrays);


7.hash方法

hset h1 id 11 把键值对id为11写入h1中

hget h1 id 取出h1中键为id的值

hmset h1 id 11 name 22 age 33 对h1设置id,name,age的键值对

hmget h1 id name age 返回多个值,返回的只有值没有key

hgetall h1 返回所有的key和value

hdel h1 name 删除h1中的name

hlen h1 返回h1的元素个数

hexists h1 id 判断是否有id的key

hkeys h1 返回所有的key

hvals h1 返回所有的value

hincryby h1 age 2 对h1中age加2

hincrbyfloat h1 age 2.3 增加小数

hsetnx h1 age 26 如果不存在就添加元素

常用代码:

 
 
Map<String,Object> testMap = new HashMap(); testMap.put("name","jack"); testMap.put("age",27); testMap.put("class","1"); template.opsForHash().putAll("redisHash1",testMap);
 
 
List<Object> kes = new ArrayList<Object>(); kes.add("name"); kes.add("age"); System.out.println(template.opsForHash().multiGet("redisHash",kes));



8.zset方法

zadd z1 6 v1 7 v2 8 v3 9 v4 按照权值给z1中添加元素

zrange z1 0 -1 返回所有有序元素

zrange z1 0 -1 withscores返回带有权值

zrangebyscore  z1 2 4 返回权值在2到4之间的元素

 zrangebyscore  z1 (2 4 返回权值在2到4之间的元素,不包含2

zrangebyscore  z1 2 (4 返回权值在2到4之间的元素,不包含4

zrangebyscore z1 2 (12 limit 5 3  返回z1中权限值在2到12不包括12的所有元素,并且限制从权限值为5开始的取3个元素

zrem z1 v5 删除v5元素

zcar z1 返回元素个数

zcount z1 60 80 返回权限是60到80的个数

zrank z1  v4 返回下标

zscore z1 v4 返回v4的权限制

zrevrank z1 v4 逆序获取下标

zrevrange z1 0 -1 逆序获取数据

zrevrangebyscore  z1 9 6 按照权值逆序获取值


猜你喜欢

转载自blog.csdn.net/yuliantao/article/details/78736132